C# 如何从实体框架4.0中继承其他实体的实体中获取数据
EF的新人-请容忍我 由于数据库的设计方式,在我的模型中,我有一个用户实体。联系人实体继承自用户实体,配置文件实体继承自联系人实体 如何获取配置文件列表,以及如何创建配置文件 我可以得到一个用户列表没有问题C# 如何从实体框架4.0中继承其他实体的实体中获取数据,c#,asp.net,entity-framework-4,C#,Asp.net,Entity Framework 4,EF的新人-请容忍我 由于数据库的设计方式,在我的模型中,我有一个用户实体。联系人实体继承自用户实体,配置文件实体继承自联系人实体 如何获取配置文件列表,以及如何创建配置文件 我可以得到一个用户列表没有问题 非常感谢你的帮助 对于每个类型继承的实体框架4表,您需要两件事: “父”表和“子”表。“子”表与“父”表的PK之间应该有一个FK 您需要在EDM中设置继承关联。如果操作正确,您应该会看到实体之间的箭头关联,并且子表的名称中应该有说明其父表的文本 现在,您可以通过以下方式获得“用户”:(我假设
非常感谢你的帮助 对于每个类型继承的实体框架4表,您需要两件事:
var allContacts = ctx.Users.OfType<Contact>();
同样,这是您获取个人资料的方式:
var allProfiles = ctx.Users.OfType<Profile>();
另一方面,我希望这些表与ASP.NET成员模式无关。如果是的话,现在就停下来。不应通过EF映射这些表。通过常规成员资格API访问该功能
HTH.我也想知道(也是EF的新手)。对于LINQ to SQL(通过WCF for Silverlight 3),我从未使用过生成的对象,因为我总是希望得到比框架提供的更“高级”的东西(例如添加或删除字段)。因此,每个DB对象都有一个自定义对象。这听起来像是更多的工作,但从长远来看,这并不是什么令人头痛的事。@Peet Brits-看我的答案。我最近也做过同样的事情。很容易做到。如果我尝试这样做:var allContacts=ctx.Users.OfType,我在allContacts上遇到这个错误:无法将方法组分配给隐式类型的局部变量my bad-您需要在末尾使用()
ctx.Users.OfType()
。这将是一个IQueryable,如果您想要一个列表,请执行以下操作:ctx.Users.OfType().ToList()代码>
foreach (var item in source)
{
if (item is Contact) result.Add(item);
}
var allProfiles = ctx.Users.OfType<Profile>();
var newProfile = new Profile { Name = "Foo" };
ctx.Users.AddObject(newProfile);