gpt4 book ai didi

c# - 使用 Linq-To-Entities 时可以创建嵌套类吗?

转载 作者:行者123 更新时间:2023-11-30 14:38:39 25 4
gpt4 key购买 nike

我还在学习 Entity Framework 和 Linq-To-Entities,我想知道这种声明是否可行:

using (var context = new MyEntities())
{
return (
from a in context.ModelSetA.Include("ModelB")
join c in context.ModelSetC on a.Id equals c.Id
join d in context.ModelSetD on a.Id equals d.Id
select new MyModelA()
{
Id = a.Id,
Name = a.Name,
ModelB = new MyModelB() { Id = a.ModelB.Id, Name = a.ModelB..Name },
ModelC = new MyModelC() { Id = c.Id, Name = c.Name },
ModelD = new MyModelD() { Id = d.Id, Name = d.Name }
}).FirstOrDefault();
}

我必须使用一个预先存在的数据库结构,它不是很优化,所以我无法在没有大量额外工作的情况下生成 EF 模型。我认为简单地创建我自己的模型并将数据映射到它们会很容易,但我不断收到以下错误:

Unable to create a constant value of type 'MyNamespace.MyModelB'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.

如果我删除 ModelB、ModelC 和 ModelD 的映射,它会正确运行。我无法使用 Linq-To-Entities 创建新的嵌套类吗?还是我写错了?

最佳答案

您所拥有的将适用于 POCO(例如, View 模型)。 Here's an example.您只是不能以这种方式构建实体。

另外,joingenerally inappropriate for a L2E query.请改用实体导航属性。

关于c# - 使用 Linq-To-Entities 时可以创建嵌套类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7615241/

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