如何使用Entity Framework更改外键关联?

时间:2009-11-20 13:28:56

标签: c# asp.net entity-framework

使用ASP.NET Entity Framework,如何更改两个实体之间的外键关联?

以下是一个示例场景:

---------------     ----------------
|  Customer   |     |     Class    |
---------------     ----------------
| ID          |     | Desctription |
| Name        |     | Name         |
| ClassID (FK)|-----| ID           |
---------------     ----------------

客户以D类客户身份开始。客户花费的越多,分类将变为C,B或A.如何使用EF进行此操作?

我在EF和我的解决方案之间设置了一个外观(因为有些操作需要EF以外的操作),我尝试这样做:

  

customer.Context.Class.ID = facade.SelectClass(ClassID)

返回Class的Business Object,但customer.Context.Class.ID需要一个Data Layer对象,虽然我可以这样做,但这意味着我会脱离设置层设计。

有什么方法吗?

很抱歉,如果问题有点混乱或模糊。

1 个答案:

答案 0 :(得分:1)

首先,让我们在没有你所有额外图层的情况下回答这个问题。在直接EF中,你可以这样做:

var customer = Context.Customers.Where(c.Id == id).First();
customer.Class = Context.Classes.Where(c.Id == classId).First();

现在,您如何将其映射到业务对象?我无法在没有看到代码的情况下调试代码,但是您需要在外观中公开一些将业务类型映射到数据层类型的功能。我用表达式做这个,但是有很多解决方案。