首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当两个属性使用相同的实体时,EF6代码第一次混淆

当两个属性使用相同的实体时,EF6代码第一次混淆
EN

Stack Overflow用户
提问于 2015-01-20 14:20:40
回答 2查看 201关注 0票数 0

我正在使用Code方法创建我的数据库,到目前为止,这种方法工作得很好。然而,我有一个小问题,EF6似乎无法理解,或者我做错了。

我有Project类,它有一个属性CreatedBy类型为Person,另一个属性Members类型为ICollection<Person>

代码语言:javascript
运行
复制
public class Project
{
    // ...
    public Person CreatedBy { get; set; }
    public virtual ICollection<Person> Members { get; set; }
}

在类Person中,我添加了以下属性:

代码语言:javascript
运行
复制
public virtual ICollection<Project> Projects { get; set; }

告诉EF6,这两个类之间应该有多到多的关系。

如果我在Visual中运行了一个Add-MigrationUpdate-Database,并在Project类中注释了CreatedBy,那么将会在数据库中创建一个Project <-> Person表。

如果我取消对CreatedBy属性的注释并再次运行相同的脚本,那么Project <-> Person表就会被删除,ProjectPerson表都会得到一个新列,在这两个表之间有一个ForeignKey,将其更改为1到1的关系。

我如何首先使用代码在我的ProjectPerson类之间建立关系,这样我就可以同时创建一对多(1个人可以创建多个项目)和多到多(可以将许多人添加到许多项目中)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-20 16:32:34

您需要为配置实体使用Fluent API:

代码语言:javascript
运行
复制
    class ProjectConfiguration : EntityTypeConfiguration<Project>
    {
        public ProjectConfiguration()
        {
            HasRequired(e => e.CreatedBy).WithMany(); // one-to-many
            HasMany(e => e.Members).WithMany(); //many-to-many
        }
    }

    public class Context : DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new ProjectConfiguration());
        }
    }

关于Fluent API:http://msdn.microsoft.com/en-us/data/jj591617.aspx的更多细节

使用Fluent API:http://msdn.microsoft.com/en-us/data/jj591620配置关系

票数 3
EN

Stack Overflow用户

发布于 2015-01-20 16:06:47

我还没有验证这一点,但是如果为您创建的对象指定和显式外键,就足以区分这两种不同的关系:

代码语言:javascript
运行
复制
// make nullable if CreatedBy is not required
[ForeignKey("CreatedBy")]
public int CreatedById { get; set; }
public Person CreatedBy { get; set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28047631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档