我有一个现有的数据库(我不能以任何方式修改),我想使用EF进行编码。这个数据库没有主键、外键或实际关系,所有的表之间似乎都是由应用程序处理的。对于大多数表/实体,这是很简单的。然而,我有一个类如下(简化)的,我正在努力解决它。
[Table("tableName")]
public class MyClass
{
[Key]
[Column("id")]
public int? Id { get; set; }
[Column("name")]
public string CompanyName { get; set; }
[Column("address")]
public string Address { get; set; }
}
像 _context.MyClasses.Where(x => x.Address == "something")
这样的语句是可以正常工作的。然而,当数据库中的 id 列为 NULL 时,我会得到一个空对象 - 即使 CompanyName 和 Address 有值。而我需要这些值,无论 id(或其他任何东西)是否为空。是否有一种方法可以强制 EF 生成对象并忽略空列?
移除或移动 [Key] 属性会导致异常,例如 "必须有一个键列"(如果有任何匹配的其他类,则 Id 列也用于将其映射到此类的集合中)。
更新 不要将 Id 列视为实际标识符。它基本上只是一个带有愚蠢名称的整数。