我创建了一个示例项目,您可以在此处下载。
手动重新创建的步骤:
- 创建新的 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 上。
其他人可以复制这种行为吗?我在做一些公然错误的事情吗?欢迎所有反馈。