只是想知道这是否可能:我有一个无法修改的现有数据库中的表。我只对查看数据感兴趣。我不会更新表格。
没有主键。有两个键可以使行唯一。不幸的是,这两个列都允许并且具有空值。
我尝试过:
modelBuilder.Entity<IesHrEmployee>(entity => {
entity.HasKey(o => new { o.PERS_NO, o.POS_NO });
entity.ToTable("IES_HR_EMPLOYEES", "DBO");
});
很遗憾,我的存储库中
public class IesHrEmployeesRepository : IIesHrEmployeesRepository
{
private DataContext context;
public IesHrEmployeesRepository(DataContext ctx) => context = ctx;
public IEnumerable<IesHrEmployee> IesHrEmployees => context.IesHrEmployees.ToArray();
}
在toArray
通话中,出现此错误:
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker [2]
在139.9397毫秒中执行的操作UserNavigator.Controllers.IesHrController.Index(UserNavigator)失败:
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware [1]执行请求时发生未处理的异常。 System.Data.SqlTypes.SqlNullValueException:数据为Null。不能在Null值上调用此方法或属性。
在System.Data.SqlClient.SqlBuffer.get_String()
在System.Data.SqlClient.SqlDataReader.GetString(Int32 i)
答案 0 :(得分:5)
否,您不能从可为空的列组成主键。但是,如果只需要查询该表(没有插入或更新),则可以在上下文中创建DbQuery<IesHrEmployee>
属性,而根本不需要键。