编程语言
首页 > 编程语言> > c# – 当基础来自EF4.1 DbContext时,如何创建一个继承的类?

c# – 当基础来自EF4.1 DbContext时,如何创建一个继承的类?

作者:互联网

我们的团队正在使用Entity Framework 4.1 ORM.我们没有在Code First模式下使用它,但我们正在使用此版本的干净POCO生成功能.

我们遇到的是我们想要创建一个基于EF POCO的继承类,但到目前为止,我们能够看到这种情况的唯一方法是在数据库中有一个映射表.有没有更好的方法来创建这个继承的实体?以下代码是我们正在谈论的一个例子.

生成此类:

public partial class Member
{
public Member()
{
    this.ContactAddresses = new HashSet<ContactAddress>();
    this.ContactEmails = new HashSet<ContactEmail>();
    this.FormDatas = new HashSet<FormData>();

    this.ContactPhones = new HashSet<ContactPhone>();
}

public int ID { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Alias { get; set; }
public string Title { get; set; }
public string Company { get; set; }
public string Prefix { get; set; }
public string Suffix { get; set; }
public System.DateTime CreatedDate { get; set; }
public int CreatedBy { get; set; }
public Nullable<System.DateTime> ModifiedDate { get; set; }
public Nullable<int> ModifiedBy { get; set; }
public Nullable<System.Guid> AspNetUserID { get; set; }

public virtual aspnet_Users aspnet_Users { get; set; }
public virtual ICollection<ContactAddress> ContactAddresses { get; set; }
public virtual ICollection<ContactEmail> ContactEmails { get; set; }
public virtual ICollection<FormData> FormDatas { get; set; }

public virtual ICollection<ContactPhone> ContactPhones { get; set; }
}

这是我们想要创建的示例:

public class SpecificMember : Member 
{
public SpecificMember()
{
    this.Assignments = new HashSet<Assignment>();
    this.Expertises = new HashSet<Expertise>();
    this.Experiences = new HashSet<Experience>();
    }this.VendorInformations = new HashSet<VendorInformation>();

public virtual ICollection<Assignment> Assignments { get; set; }
public virtual ICollection<Expertise> Expertises { get; set; }
public virtual ICollection<Experience> Experiences { get; set; }
public virtual ICollection<VendorInformation> VendorInformations { get; set; }

}

我真的想远离在数据库中放置另一个表.我的想法是我们在这里只处理类,但我不确定这两个实体如何相互协作.

在使用Entity Framework或代码中如何实现这一点的任何想法都会很棒.提前致谢.

解决方法:

这在EF4.1中称为复杂类型,您可以使用几个选项.您可以将它们放在单独的表中(称为“每种类型的表”),也可以将它们放在同一个表中(称为“每个层次结构的表”),这意味着将向表中添加一个鉴别器列以告知EF它的类型.

我还没有使用它,但是在EF4.1中这看起来非常强大

查看这篇多部分文章,了解处理Complex Types in EF4.1的一个很好的概述.它是针对CTP5编写的,但对我来说看起来很准确.

我想你想要的是this page here.

如果要映射到现有数据库或想要手动控制模式,this article还有另一个处理现有数据库的方案的示例.

标签:c,asp-net-mvc,entity-framework,entity-framework-4-1
来源: https://codeday.me/bug/20190531/1187455.html