Entity Framework Code First and Multiple Assemblies

狂风中的少年 提交于 2019-12-18 17:00:10

问题


I have a subclass in a different assembly to its base class. The parent is a POCO class used for EF Code First.

When I try to add an instance of inherited class to the database I get InvalidOperationException: "Object mapping could not be found for Type with identity 'Foo.Bar.MyInheritedClass'".

It works fine if subclass is in same assembly as base class.

In regular EF the solution seems to be a call to ObjectContext.MetadataWorkspace.LoadFromAssembly(assembly). But I can't figure out how this relates to Code First.

Any advice?

I'm using Entity Framework 4.1 RC.


回答1:


I solved this by inheriting from the first assembliy's DbContext, adding a DbSet<> for the derived class, and then adding new instances of derived type to to that.

Posted code on MSDN forum here.




回答2:


I know this post is a bit old, but I was able to accomplish this using @Dave's recomendation inside the constructor:

public Context() {
    ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(
        System.Reflection.Assembly.GetAssembly(
             typeof(--[Inherited DbContext]--)));
}



回答3:


I'm quite new to EF (Entity Framework 4) and I got the same exception when I made changes in the model.

My problem turned out to be that I did not know EF need all the names on all the navigation properties to agree, not only their type. For example if there is a navigation property named foo, then there needs to be a declared variable in the corresponding class with the very same name.



来源:https://stackoverflow.com/questions/5378678/entity-framework-code-first-and-multiple-assemblies

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!