我有一个现有数据库(我无法以任何方式修改),我想使用 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] 属性会给我一个异常(exception),例如“必须有一个键列”(并且 Id 列还用于将其他类的集合映射到此类(如果有匹配的类))。
更新 不要将 Id 列视为实际标识符。它基本上只是一个带有愚蠢名称的整数。
最佳答案
如果 KeyAttribute 在数据库中可为空,则不能将其放置在 Id 属性之上。这就是给你带来问题的原因......
主键不能为空,但我想你知道......
关于c# - 当行具有空值时, Entity Framework 返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359147/