gpt4 book ai didi

c# - 当基类来自 EF4.1 DbContext 时如何创建继承类?

转载 作者:太空狗 更新时间:2023-10-30 00:57:07 25 4
gpt4 key购买 nike

我们的团队正在使用 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# - 当基类来自 EF4.1 DbContext 时如何创建继承类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972113/

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