時,假設你有初始化它的默認值業務邏輯域實體。例如。初始化的DTO使用RIA服務
class User : IUser, Entity
{
public User()
{
StartDate = DateTime.Now;
EndDate = StartDate.AddDays(3); // This value could be user-configured.
}
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
使用RIA服務,將生成的DTO當然不包含任何邏輯,只包含公共屬性。這意味着,當客戶端(例如Silverlight應用程序)顯示「創建新用戶」對話框時,將無法使用任何默認值填充字段(當然,不需要在客戶端上覆制業務邏輯)。
在試圖做到這一點,我創建了新的DTO(UserDTO)和我UserDomainService查詢:
// Construct a new domain entity and then convert to DTO
public UserDTO CreateNewUser()
{
var user = new User(); // Business logic has now been executed.
return new UserDTO(user);
}
這並允許客戶端來填充默認值的字段,但是當談到時間添加新創建的用戶,RIA已經將UserDTO添加到它的內部實體集合中,因此您無法在您的域上下文中調用.Add。你仍然可以調用SubmitChanges,它會觸發[Update]方法被調用,但是這似乎與RIA服務應該如何使用有關(即你不應該在一個INSERT操作中UPDATE方法)。
是這種情況下(即服務器端生成的DTO的)在RIA服務實現的?
謝謝,是的,這將會完成這項工作。看起來RIA服務v1.0對於「真實世界」應用程序還不完全準備好。我們現在決定在我們的Silverlight LOB應用程序中不使用RIA服務,因此,還有['多對多'限制](http://stackoverflow.com/questions/1768489/many-to-many-關係型淨RIA服務)。 RIA services v1.0聞起來像實體框架v1.0 - 很有前途,但更好地等待v2.0。 –