gpt4 book ai didi

entity-framework - "only parameterless constructors are support in Linq to Entites"有哪些可能的解决方法

转载 作者:行者123 更新时间:2023-12-04 08:57:26 28 4
gpt4 key购买 nike

在我的查询中,我需要返回一个没有默认构造函数的类的实例(特别是这是在自定义成员资格提供程序中,而 MembershipUser 是罪魁祸首)

var users = from l in context.Logins
select new MembershipUser(
Name,
l.Username, // username
l.Id, // provider key
l.MailTo,
l.PasswordQuestion,
l.Notes.FirstOrDefault().NoteText,
l.IsApproved,
l.IsLockedOut,
l.CreatedOn,
l.LastLoginOn.HasValue ? l.LastLoginOn.Value : DateTime.MinValue,
l.LastActivityOn.HasValue ? l.LastActivityOn.Value : DateTime.MinValue,
DateTime.MinValue,
l.LastLockedOutOn.HasValue ? l.LastLockedOutOn.Value : DateTime.MinValue
);

在语法上是正确的,但会导致运行时错误,因为 LINQ to Entities 中仅支持无参数构造函数和初始值设定项。

更新:作为一种解决方法,我现在将选择放入一个列表(它解析运行查询表达式)然后我可以从该列表中选择新的 MembershipUser。
var users = (from l in context.Logins
select new { login = l }).ToList().Select(u => new MembershipUser (
Name,
u.login.Username, // username
u.login.Id, // provider key
u.email.MailTo,
u.login.PasswordQuestion,
u.login.Notes.FirstOrDefault().NoteText,
u.login.IsApproved,
u.login.IsLockedOut,
u.login.CreatedOn,
u.login.LastLoginOn.HasValue ? u.login.LastLoginOn.Value : DateTime.MinValue,
u.login.LastActivityOn.HasValue ? u.login.LastActivityOn.Value : DateTime.MinValue,
DateTime.MinValue,
u.login.LastLockedOutOn.HasValue ? u.login.LastLockedOutOn.Value : DateTime.MinValue
);

最佳答案

我认为问题在于您需要从 LINQ to Entities 转义到 LINQ to Objects,这允许任意方法调用。 AsEnumerable 扩展方法为您完成了这项工作。
这个怎么样:

var users = from l in context.Logins.AsEnumerable() 
select new MembershipUser(
Name,
l.Username, // username
l.Id, // provider key
l.MailTo,
l.PasswordQuestion,
l.Notes.FirstOrDefault().NoteText,
l.IsApproved,
l.IsLockedOut,
l.CreatedOn,
l.LastLoginOn ?? DateTime.MinValue,
l.LastActivityOn ?? DateTime.MinValue,
DateTime.MinValue,
l.LastLockedOutOn ?? DateTime.MinValue
);

关于entity-framework - "only parameterless constructors are support in Linq to Entites"有哪些可能的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com