其他分享
首页 > 其他分享> > CodeGo.net>实体框架以不确定性的方式删除有效内容未经许可?

CodeGo.net>实体框架以不确定性的方式删除有效内容未经许可?

作者:互联网

我在使用EF将数据存储到数据库时遇到麻烦.通常,所有CRUD操作对于程序的其余部分都可以正常工作,但是最近我注意到,在m:n关系的情况下,棘手的部分来了.

我将EF4.1与代码优先方法结合使用.我的课程有趣的部分如下所示:

public class Publication : IItem, IDataErrorInfo {

     ...

    [InverseProperty("Publications")]
    public virtual ICollection<Group> Groups{ get; set; }
}

public class Group : IItem, IDataErrorInfo {

     ...

    [InverseProperty("Groups")]
    public virtual ICollection<Publication> Groups{ get; set; }
}

数据库创建如下:

    public PublicationsDB() : base("PublicationDB") {
        this.Configuration.AutoDetectChangesEnabled = true;
    }

    public DbSet<Publication> Publications { get; set; }
    public DbSet<Software> Softwares { get; set; }
    public DbSet<Group> Group{ get; set; }

目的是在出版物和组之间创建m:n关系.

最近,当我从XML导入数据时,一切正常.在调用SaveChanges()之后,两个发布和组都将存储其ICollection.在相同的方法中,下面几行内容是我从数据库中获取数据(仅用于检查),并且两个实体都填充了其ICollection.

麻烦来了:

当执行不同的数据处理功能时,我从数据库中挖掘数据并:

>出版物的收集情况良好,所有实体均具有适当的ICollection< Group>.从xml填充
>但是,网上论坛的集合相当混乱.它们中的大多数具有ICollection< Publication>.设置为null.

可能是什么问题?这种行为对我来说真的很奇怪.最后但并非最不重要的一点是从DBSet< Groups>中删除Collections.不是确定性的.我的意思是,如果我们考虑组A和组B,那么在程序A.ICollection = null和B.ICollection.Count = 1的运行中(这是错误的),而在另一轮运行中则不同,即A.ICollection = null和B.ICollection = null(这也是错误的)

有任何想法吗?

构建代码时首先陷入混乱的模型数据库?框架错误或怪异的内部框架优化?还是我只是个屁眼?

标签:ef-code-first,entity-framework-4-1,c,entity-framework
来源: https://codeday.me/bug/20191201/2079885.html