[英]Argument out of range exception for decimal SQL Server EF C#
我要么瘋了,要么完全錯過了這里的東西。 我有一個時間條目我試圖提交一個“TimeWorked”屬性,其SQL服務器中的數據類型是十進制(4,2)。
當我嘗試添加10.00作為TimeWorked的值的時間條目時,我收到以下錯誤。
錯誤
要插入的代碼
using (var context = new ProjectTrackingDb())
{
TimeEntry entry = new TimeEntry
{
ProjectName = SelectedProject.ProjectName,
Phase = SelectedProject.Phase,
Code = SelectedClassification.Code,
TimeWorked = TimeEntry.TimeWorked,
Description = TimeEntry.Description,
UserName = CurrentUserName,
Date = TimeEntry.Date
};
context.TimeEntries.Add(entry);
context.SaveChanges();
}
數據庫模型
[Table("TimeEntry")]
public partial class TimeEntry
{
[Key]
public int EntryID { get; set; }
public decimal TimeWorked { get; set; }
[Column(TypeName = "text")]
[Required]
public string Description { get; set; }
[Column(TypeName = "date")]
public DateTime Date { get; set; }
[StringLength(20)]
public string UserName { get; set; }
[StringLength(30)]
public string ProjectName { get; set; }
[StringLength(30)]
public string Phase { get; set; }
[StringLength(2)]
public string Code { get; set; }
}
數據庫數據類型:
我嘗試過的:
我嘗試了一些事情。 我嘗試將Range(0,10)數據注釋添加到數據庫的模型中。 我將小數的精度提高到(18,4)只是為了看它是否會接受它。
我能夠直接在SSMS中手動將值10插入到數據庫中,所以我不太確定它是如何工作的但我的代碼插入不是?
編輯
我還嘗試將10直接添加到我的代碼中的timeworked屬性,它仍然拋出錯誤。 我在插入之前檢查數據,它也顯示為10。
正如問題的評論中所建議的那樣,我在實體框架中使用模型構建器來設置精度,以匹配我的數據庫的精度。
感謝大家幫我解決這個問題。
碼
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TimeEntry>().Property(e => e.TimeWorked).HasPrecision(4, 2);
base.OnModelCreating(modelBuilder);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.