簡體   English   中英

參數超出十進制SQL Server EF C#的范圍異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM