2012-05-24 27 views
0

我想使用Dapper.Net ORM和Entity Framework設置一個類似於dataSet1.EnforceConstraints = false;的東西。在使用Dapper和Entity Framework時放寬或禁用表約束?

我創建的模型在VS2010其中一個屬性:

[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] 
    [DataMemberAttribute()] 
    public global::System.String ethnicname 
    { 
     get 
     { 
      return _ethnicname; 
     } 
     set 
     { 
      OnethnicnameChanging(value); 
      ReportPropertyChanging("ethnicname"); 
      _ethnicname = StructuralObject.SetValidValue(value, false); 
      ReportPropertyChanged("ethnicname"); 
      OnethnicnameChanged(); 
     } 
    } 

...當valuenull,我在StructuralObject.SetValidValue...得到一個約束的例外。如何以及在哪裏關閉?

我的數據呼叫是這樣的:

public DAL.Models.PROFILE GetProfile(int profileID) 
    { 
     using (IDbConnection connection = OpenConnection("MyDBConnectionString")) 
     { 
      try 
      { 

       var profiles = connection.Query<DAL.Models.PROFILE>("SELECT * FROM PROFILES WHERE [email protected]", new { ID = profileID }); // IEnumerable 
       var profile = profiles.First<DAL.Models.PROFILE>(); 

       return profile; 
      } 
      catch (Exception ex) 
      { 
       ErrorLogging.Instance.Fatal(ex); 
       return null; 
      } 
     } 
    } 
+0

您是否在同一時間使用Dapper *和* EF? –

+0

是的。我使用EF來生成類和調用的Dapper,都在WCF Web服務中。似乎是窒息。建議? (可能是新問題的主題) – ElHaix

+0

爲什麼不自己創建普通的POCO類並擺脫EF? –

回答

1

如果您使用的是自動生成基於EntityObject實體和你標記字段不能爲空(你的數據庫有它不可爲空),你不能把這個驗證關。 SetValidValue的第二個參數決定是否允許null。

+0

對。在數據庫中,這些字段可以爲空,但由於某種原因,當類生成時,它被設置爲false,並且應該爲true。我寧願不必在課後生成這些編輯。 – ElHaix

+0

您可以在設計器(EDMX)中控制該屬性是否可以爲空。 –

+0

謝謝...發現它。這有點令人困惑,因爲我認爲我不得不修改某個表的屬性。原來問題出在一個由sproc產生的複雜類型上。 – ElHaix