2016-10-17 73 views
3

我與實體框架一個奇怪的問題,在使用EF 6 codefirst我的項目IM和使用的isactive柱使用SQLSERVER 2012實體框架不更新位值

與表IAM我的數據庫IM類型位,它只代表0或1。並默認我保持這個列值爲1,這代表真實。

當我們想從表中刪除一條記錄時,我們應該使1到0,但實體框架不更新值。

是有這個奇怪問題的任何一個解決方案嗎?

代碼:

using (var context = new TriviaContext()) 
      { 

       var booking = context.Booking.FirstOrDefault(b => b.BookingId == id); 
       context.Entry(booking).Property(u => u.IsActive).IsModified=true; 
       booking.IsActive = false; 


       context.SaveChanges(); 

       return Ok(booking); 
      } 

訂房型號:

class Booking 
{ 
public int BookingId { get; set; } 
public string Name{get;set;} 
[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
public bool? IsActive { get; set; } 
} 

編輯:其實我已經包含DatabaseGenerated屬性在我的模型類,可能是這個原因造成的問題?

TriviaContext:

public class TriviaContext : DbContext 
{ 
    public TriviaContext() 
     : base("name=DefaultConnection") 
    { 
    } 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 
    public DbSet<Bookings> Booking { get; set; } 
} 
+0

你能展示一些代碼,表結構? – Danh

+0

你能顯示代碼嗎? – Sampath

+0

以及EF沒有生成更新代碼... – user3768179

回答

0

以及我正在使用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]屬性爲默認值生成的值,但這導致實體框架dint生成sql來更新記錄,所以當我刪除此屬性時,EF能夠生成更新的東西。所以我現在可以和我的工作一起去。但是這有點編碼是對還是錯?有經驗的人可以建議我,這有點問題解決....

問候 波什

0

試試這個:

 using (var context = new TriviaContext()) 
     { 
     var booking = (from x in context.Booking 
     where x.BookingId == id 
     select x).First(); 

      booking.IsActive = false; 
      context.SaveChanges(); 

      return Ok(booking); 
     } 
+0

不工作..我試過了 – user3768179

0

實體加載和跟蹤,因此無需使用Entry方法來更改屬性值,只是改變和保存實體

using (var context = new TriviaContext()) 
      { 

       var booking = context.Booking.Find(id); 
       booking.IsActive = false; 
       context.SaveChanges(); 

       return Ok(booking); 
      }