我有一个现有的数据库(我无法以任何方式修改),我想使用 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 列视为实际标识符。它基本上只是一个带有愚蠢名称的整数。