有没有办法在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
答案 0 :(得分:0)
只有将列标记为计算或标识(在插入时自动生成)才有可能,但它有另一个后果 - EF会在更新或插入后尝试选择该列,因此如果表中不存在,您将仍然会收到错误。
看起来你正在尝试填充不是实体的类,并且这样的类不能用于持久性!如果您在查询中有自定义连接,则表示您正在进行数据的投影/查看,结果很可能不是实体=不应该用于保存更改。