2012-01-21 36 views
3

我想使用此代碼實體保存到我的數據庫:DbContext.SaveChanges();不給錯誤,但不會增加實體數據庫

public void Add(object entity) 
     { 
      DbContext.Entry(entity).State = System.Data.EntityState.Added; 
      DbContext.SaveChanges(); 
     } 

我測試,如果事情是錯的(例如實體的領域在數據庫中不能爲空),它會給出一個錯誤。我填寫了所有必需的字段並調用了該代碼。它沒有給出錯誤。但是,實體也沒有被添加到數據庫中。我怎樣才能找出DbContext.SaveChanges();出錯沒有錯誤信息?

下面是調用Add()函數的代碼。

public void StoreElectronicSignatureType(ElectronicSignatureTypeModel model) 
    { 
     var RSA = new System.Security.Cryptography.RSACryptoServiceProvider(); 
     var parameters = RSA.ExportParameters(false); 
     model.modulus = Convert.ToBase64String(parameters.Modulus); 
     model.exponent = Convert.ToBase64String(parameters.Exponent); 
     model.privatekey = RSA.ToXmlString(true); 

     ElectronicSignatureType electronicSignatureType = new ElectronicSignatureType(); 
     Entity entity = GetEntity(model.entity); 
     electronicSignatureType.Entity = entity; 
     electronicSignatureType.HashAlgorithm = model.hashAlgorithm; 
     electronicSignatureType.Exponent = model.exponent; 
     electronicSignatureType.Modulus = model.modulus; 
     electronicSignatureType.Version = model.version; 
     //electronicSignatureType.EntityId = entity.EntityId; 
     electronicSignatureType.PrivateKey = StrToByteArray(model.privatekey); 
     Add(electronicSignatureType); 
    } 
+0

我不確定是否將未跟蹤項目的狀態設置爲已添加是正確/足夠的。我認爲你需要像'context.AddObject(...)' –

+0

這樣的東西,並且請添加像Linq-to-sql或EF這樣的標籤,我不記得所有這些上下文變化。 –

+0

它適用於不同的應用程序。 –

回答

5

您必須將新實體附加到上下文。嘗試:

context.ElectronicSignatureTypes.Add(electronicSignatureType); 
context.SaveChanges(); 
相關問題