开发者

Entity Framework with multiple edmx

Let's say I have in my database multiple db schema for example : HumanRessources and Inventory.

In each of those schema contains multiple tables. Do you usually split your DB into multiple edmx or usually just put everything in one single edmx?

I was thinking about creating a edmx for each schema, but wondering how this will impact a unitorwork pattern. Reading through some articles, the ObjectContext will be the unitofwork. By defining 2 edmx, I will end up with 2 ObjectContext : HumanRessourceContext and InventoryContext, meaning each will will be a unitofwork. What if I want all modification made to an entity in the humanressource and an entity in the inventor开发者_StackOverflow社区ycontext to be ATOMIC, can this be achieve with the unitofwork pattern?


While this isn't an endorsement of splitting up the database by schema into EDMX's, you can make the updates atomic by using a TransactionScope:

using(TransactionScope trans = new TransactionScope())
{
    using(HumanResources hr = new HumanResources())
    {
        //...

        hr.SaveChanges();
    }

    using(Inventory inv = new Inventory())
    {
        //...

        inv.SaveChanges();
    }

    trans.Complete();
}

Obviously you can rearrange your context objects however you like (if you need to use them both at the same time, for instance) and you can alter the transaction isolation level to whatever is appropriate, but this should give you what you need to know in order to make your database changes atomic.


If your Inventory and HumanResources tables don't have any relationships between them, splitting up the tables into two edmx files is fine, though I don't know what benefit it would offer. If they do have direct or indirect relationships, you will run into problems trying to use those relationships. The simplest solution is to use a single EDM.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜