2016-09-22 34 views
1

我的EntityFramework出現了一些問題。 我的設置如下: 我使用代碼優先遷移,這是數據庫結構:EntityFramwork 6 - 調用SaveChanges時未設置ID()

using Microsoft.Azure.Mobile.Server; 

namespace myProject.DataObjects 
{ 
    public class ListRelations : EntityData 
    { 
     public string userID { get; set; } 
     public bool read { get; set; } 
     public bool write { get; set; } 
    } 
} 

現在從EnitityData inherting應該添加ID字段和所有元數據的東西,對不對? 當我嘗試填充數據庫,像這樣:

  var relations = new ListRelations(); 
      relations.userID = currentUser; 
      relations.read = true; 
      relations.write = true; 
      relations.listID = current.Id; 
      context.ListRelationsSet.Add(relations); 
      try { 
       context.SaveChanges(); 
      } 
      catch (DbEntityValidationException dbEx) 
      { 
       foreach (var validationErrors in dbEx.EntityValidationErrors) 
       { 
        foreach (var validationError in validationErrors.ValidationErrors) 
        { 
         Trace.TraceInformation("Property: {0} Error: {1}", 
               validationError.PropertyName, 
               validationError.ErrorMessage); 
        } 
       } 
      } 

我得到的錯誤,說是需要的ID字段來進行填充。 但是,不應該數據庫爲我做這個? 我有點困惑, 歡迎任何幫助!

+0

什麼是'EnitityData'? – DavidG

+0

This:https://msdn.microsoft.com/en-us/library/azure/mt587298.aspx – Tom

+0

['EntityData.Id'](https://msdn.microsoft.com/en-us/library/azure /mt587151.aspx#P:Microsoft.Azure.Mobile.Server.EntityData.Id)類型是'string',數據庫不能爲你填充(如果你明白我的意思,它就不是標識) –

回答

1

使用

public class ListRelations : EntityData 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity), 
    Column(TypeName = "varchar"), 
    MaxLength(20), 
    Key] 
    public string userID { get; set; } 
    public bool read { get; set; } 
    public bool write { get; set; } 
} 

這取決於你的數據庫供應商,但例如T-SQL有一個名爲newsequentialid()幫助填充這些類型的列的過程。在遷移

樣品用途是

Id = c.Guid(nullable: false, identity: true, defaultValueSql: "newsequentialid()"), 
+0

挖掘更深一點,據說通過註釋設置默認值約束將得到支持在EF 7.在此之前,它看起來好像我們必須手動修改遷移https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/2929682-support-database-default-values-在-代碼優先 – mschr

相關問題