【发布时间】:2011-08-25 14:27:42
【问题描述】:
我创建了一个示例项目,您可以下载here。
手动重新创建的步骤:
- 创建新的 MVC3 Web 项目。
- 添加 .edmx
- 创建一个名为“帐户”的实体。
- 创建一个名为“AccountLineItem”的实体。
- 将 Decimal 字段添加到“AccountLineItem”。
- 在“Account”和“AccountLineItem”之间创建一对多关联,确保选中在“Account”上创建导航属性的选项。
-
添加代码以在任何地方更新数据库,我在 HomeController 上使用了 Index():
public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"; using (var db = new TestStoreContainer()) { Account acc = new Account(); acc.Name = "Test Account"; AccountLineItem accItem = new AccountLineItem(); accItem.Amount = 22.10M; acc.AccountLineItems.Add(accItem); db.Accounts.AddObject(acc); db.SaveChanges(); } return View(); }
如您所见,我正在使用一个 Account 和一个值为 22.10 的 AccountLineItem 更新数据库;但是,运行这段代码后,SQLEXPRESS 中出现的值 22 没有精度。
我使用 SQL 2008 R2 机器发现了这种行为,所以我认为问题不在于 Express。
其他人可以复制这种行为吗?我在做一些公然错误的事情吗?欢迎所有反馈。
【问题讨论】:
-
检查
Amount列的数据类型。我可能是int而不是decimal或者精度为 0 -
此外,如果您将相同的字段添加到“帐户”实体,则值会精确存储。
标签: .net asp.net-mvc-3 entity-framework-4 ef-model-first