EF5十进制类型映射的奇怪编译错误

本文关键字:编译 错误 十进制 类型 映射 EF5 | 更新日期: 2023-09-27 18:01:50

我的类库项目引用实体框架5程序集。下面代码中"AvailablePoints"的。net类型是Decimal。我正在尝试使用CodeFirst Fluent API配置将此属性映射到SQL Server中的十进制(9,4)数据类型,以便数据条目不会在小数点后2位截断,这是默认映射。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<EventGroup>().Property(g => g.AvailablePoints).HasPrecision(9,4);
    base.OnModelCreating(modelBuilder);
}
我得到以下编译错误:

"类型'System.Data.Spatial. "DbGeography'在未引用的程序集中定义。必须添加对程序集"System.Data"的引用。实体,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089'。

如果我从方法的第一个语句中删除.Property(g => g.AvailablePoints).HasPrecision(9,4);,它可以很好地编译。EF5文档或论坛帖子都没有解决这个编译器错误,也没有解释这个Fluent API配置如何与System.Data.Spatial.DbGeography类型相关。

EF5十进制类型映射的奇怪编译错误

这是因为您的项目没有引用所需的程序集。

在解决方案资源管理器中,找到项目中的"References"文件夹。
右键单击该文件夹,然后单击"添加引用"。
在"。. NET"选项卡,您可以找到"System.Data. NET"。"实体"条目,版本为4.0.0.0。添加应该解决这个问题。