从插入中排除列

时间:2012-05-03 11:13:36

标签: entity-framework-4 ef-code-first

有没有办法在Code First中映射列,以便在select时填充,但在插入或更新时不使用?

如果我应用[NotMapped]注释,则不会填充属性/列,但如果我不添加此注释,则在插入时会抱怨该列不存在。

我问的原因是,我有一个查询,它执行连接并返回列的值,但在插入时,不需要此列。

任何想法?

干杯

编辑:

只是一个更新,以更详细地解释我在做什么。

以前,我有两张桌子,

Carer
    CarerID
    UserID
    IsPrimary

User
    UserID

但是,有人要求Carer可以属于多个用户,所以我必须创建一个链接表,如下所示。

UserCarer
    UserCarerID
    UserID
    CarerID
    IsPrimary

我不想做的是,我是如何暂时解决这个问题的,就是在我的实体中创建一个方法,然后初始化另一个上下文来获取值。

相反,我希望当我选择数据时,我会执行左连接以从UserCarer表中获取IsPrimary值,从而允许我保留对Carer.IsPrimary的任何引用

即。 select * from Carer.*, UserCarer.IsPrimary from Carer left join UserCarer on Carer.CarerID = UserCarer.CarerID where UserCarer.UserID = @p0

HTH

1 个答案:

答案 0 :(得分:0)

只有将列标记为计算或标识(在插入时自动生成)才有可能,但它有另一个后果 - EF会在更新或插入后尝试选择该列,因此如果表中不存在,您将仍然会收到错误。

看起来你正在尝试填充不是实体的类,并且这样的类不能用于持久性!如果您在查询中有自定义连接,则表示您正在进行数据的投影/查看,结果很可能不是实体=不应该用于保存更改。