2010-10-29 71 views
0

我所有的服務方法都使用Facade來與業務邏輯交談。這意味着在外觀中,DataContracts(我正在使用WCF)被轉換爲實體(實體框架),然後傳遞到業務層。我現在面臨的問題是,我想在業務邏輯中加入某些驗證邏輯,但這不會將數據契約轉換爲實體。使用業務邏輯驗證數據合同(基於實體)

示例:我的外觀上有一個名爲CreateUser()的方法。傳入的UserDataContract具有一個屬性Name。這是數據庫中的一個必填字段,因此實體框架已將不可空屬性置於此成員之上(準確地說,是[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)])。我可以將驗證邏輯放入業務層,在那裏沒有問題。但是,當在名稱字段中帶有空的UserDataContract被翻譯時,會拋出ConstraintException:實體框架禁止我在UserEntity類的Name字段中設置空值。

什麼是避免這種情況的優雅方法? 我可以以某種方式刪除Entity Framework中該字段的檢查(將nullable屬性設置爲true將使EF抱怨映射到不可空列)。 是否有一些模式可用於將驗證機制引入業務層並從外牆使用此模式?

我有多個外牆,同一實體有多個數據合同。但仍然是一個實體類型和一個業務層。

我在這裏使用.Net 4.0。

謝謝!

回答

1
  1. 使用POCOs:同一類/對象數據庫層和業務層=業務對象
  2. 添加例如使用DataAnnotations屬性驗證您的業務對象。
+0

謝謝,使用屬性在我的情況下看起來很有用...... – 2010-10-29 15:10:53