首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当不存在主键时,EF6代码首先抛出NullReferenceException

当不存在主键时,EF6代码首先抛出NullReferenceException
EN

Stack Overflow用户
提问于 2015-03-10 01:22:29
回答 1查看 56关注 0票数 0

这是一个有点奇怪的。我在数据库上没有管理权限,并且正在处理一个表,该表受到适当的限制,但没有定义主键。

模式如下:

代码语言:javascript
复制
CREATE TABLE Foo
(
    KeyColumn VARCHAR(100) NOT NULL UNIQUE,
    BitValue BIT NOT NULL
)

在EF中,有一个模型:

代码语言:javascript
复制
[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映射到此底层表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 01:25:17

我能够通过使用EF6提供的泄漏抽象来解决这个问题。

代码语言:javascript
复制
var m = context.FooModel.SqlQuery(@"
    SELECT KeyColumn
    ,   BitValue 
        FROM Foo 
        WHERE KeyColumn = @KeyColumn
    ", new SqlParameter("@KeyColumn", keyColumnValue)).FirstOrDefault();

其他操作,如添加和保存模型,似乎在此之后起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28954682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档