由于数据库的设计方式,在我的模型中我有一个User实体。 Contact实体继承自用户实体,Profile实体继承自Contact实体。
如何获取个人资料列表,以及如何创建个人资料?
我能够获得用户列表没问题。
非常感谢您的帮助!
答案 0 :(得分:3)
对于实体框架4每表类型继承,您需要两件事:
现在,您可以通过这种方式获得“用户”:(我假设您已经这样做了)
var allUsers = ctx.Users;
现在获取“联系人”很特别 - 因为它属于“用户”实体集(您可以通过查看“联系人”实体的属性来证明这一点。)
这是联系人的方式:
var allContacts = ctx.Users.OfType<Contact>();
这是如何工作的? OfType 是IEnumerable扩展方法,它根据给定的类型过滤所有元素。所以它基本上是一个foreach循环:
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);
另外,我希望这些表与ASP.NET Membership模式无关。如果是,请立即停止。您不应通过EF映射这些表格。通过常规Membership API访问该功能。
HTH。