2017-01-06 37 views
0

我已经通过的NuGet最近升级EF但现在当我的代码将访问日志对象设置它抛出上述异常..多个对象集每种类型不支持? -

该错误提示对象集日志和Fulfillment.Model.IUnitOfWork.Logs '都可以包含'Fulfillment.Model.Log'类型的实例。

我最近安装了ninject迟发型,我想知道如果有什么关系呢?

这里是我的datacontext/UOW

public interface IUnitOfWork 
{ 
    IDbSet<Log> Logs { get; } 
    IDbSet<Order> Orders { get; } 
    void Commit(); 
} 

public partial class FulfillmentEntities : DbContext, IUnitOfWork 
{ 
    public FulfillmentEntities() 
     : base("name=FulfillmentEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public DbSet<Log> Logs { get; set; } 
    public DbSet<Order> Orders { get; set; } 

    IDbSet<Log> IUnitOfWork.Logs 
    { 
     get { return Logs; } 
    } 

    void IUnitOfWork.Commit() { 
     SaveChanges(); 
    } 

    IDbSet<Order> IUnitOfWork.Orders 
    { 
     get { return Orders; } 
    } 
} 

}

任何意见将不胜感激。

+0

这将是知道老有用和升级EF版本。 –

+0

完全从issuem分开但是的DbContext工作单元。我不了解你的IUnitOfWork的价值。 – Fran

回答

1

你有Logs暴露两次:

public DbSet<Log> Logs { get; set; } 

IDbSet<Log> IUnitOfWork.Logs 
{ 
    get { return Logs; } 
} 

(和同样的问题与Orders

试着改变你的代码:

public partial class FulfillmentEntities : DbContext, IUnitOfWork 
{ 
    public FulfillmentEntities() 
     : base("name=FulfillmentEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public IDbSet<Log> Logs { get; set; } 

    public IDbSet<Order> Orders { get; set; } 


    public void Commit() 
    { 
     SaveChanges(); 
    } 

} 
+0

感谢您的快速回复! 由于代码已超过800天,并且升级后OnModelCreatingMethod也被调用并且正在抛出UnintentionalCodeFirstException ... 有关如何在某种程度上简化它的任何建议?它是通过TT模板 – TheLearningDev

+0

从你升级的是什么版本,什么什么是新版本最初产生?您使用的EDMX文件 - – Alex

+0

您好我从4升级到5 – TheLearningDev

相关问题