开发者

Entity Framework Code First and Multiple Assemblies

开发者 https://www.devze.com 2023-02-18 14:11 出处:网络
I have a subclass in a different assembly to its base class. The parent is a POCO class used for EF Code First.

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.My开发者_JAVA技巧InheritedClass'".

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.


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.


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]--)));
}


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消