这是一个有点奇怪的。我在数据库上没有管理权限,并且正在处理一个表,该表受到适当的限制,但没有定义主键。
模式如下:
CREATE TABLE Foo
(
KeyColumn VARCHAR(100) NOT NULL UNIQUE,
BitValue BIT NOT NULL
)在EF中,有一个模型:
[Table("Foo")]
public partial class FooModel
{
[Key] //Also tried by setting this in the ModelBinder as well with no luck
public string KeyColumn {get;set;}
public bool BitValue {get;set;}
}
//Within DbContext subclass:
public DbSet<FooModel> {get;set;}
//When in code:
context.FooModel throws NullReferenceException. 我认为这是因为EF不能映射到基础表,尽管模式相同。KeyColumn是一个有效的键,但没有明确地定义为主键。
是否有办法强制EF CodeFirst映射到此底层表?
发布于 2015-03-10 01:25:17
我能够通过使用EF6提供的泄漏抽象来解决这个问题。
var m = context.FooModel.SqlQuery(@"
SELECT KeyColumn
, BitValue
FROM Foo
WHERE KeyColumn = @KeyColumn
", new SqlParameter("@KeyColumn", keyColumnValue)).FirstOrDefault();其他操作,如添加和保存模型,似乎在此之后起作用。
https://stackoverflow.com/questions/28954682
复制相似问题