代码之家  ›  专栏  ›  技术社区  ›  Marcus L

如何使用实体框架更改外键关联?

  •  0
  • Marcus L  · 技术社区  · 15 年前

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

    下面是一个示例场景:

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

    客户从D类客户开始。客户花费越多,分类将更改为C、B或A。如何使用EF进行此操作?

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

    customer.context.class.id=facade.selectClass(class id)

    这将返回类的业务对象,但customer.context.class.id需要一个数据层对象,虽然我可以这样做,但这意味着我将脱离设置层设计。

    有办法解决这个问题吗?

    对不起,如果问题有点混乱或模糊。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Craig Stuntz    15 年前

    首先,让我们回答这个问题,不需要所有额外的层。在纯英法中,你可以这样做:

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

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