如果我有像这样的简单添加方法
public void AddUser(User user)
{
user.Id = Guid.NewGuid();
_userList.Add(user);
}
和用户类一样
[DataContract]
public class User
{
[DataMember]
public Guid Id { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public DateTime DateCreated { get; set; }
}
添加新对象时是否可以隐藏用户ID。 我知道我可以通过参数化输入法(将每个对象属性作为输入参数发送)来实现这一点,但我认为不适合wcf模型。如果我有很多属性怎么办?这只是一个简单的例子。
答案 0 :(得分:1)
添加新对象时是否可以隐藏用户ID。我知道我可以通过参数化输入法(将每个对象属性作为输入参数发送)来实现这一点,但我认为这不符合wcf模型。
不是使用相同的DTO甚至是Entity对象本身来实现服务Get
方法和Add
方法,而是最好有
UserResult
方法的单独GetUser
DTO:
public class UserResult
public ID as Guid
public FirstName as String
public LastName as String
public DateCreated as DateTime
end class
public class UserService
public function GetUser(ID as Guid) as UserResult
end class
以及UserAddCommand
方法的单独AddUser
DTO:
public class UserAddCommand
public FirstName as String
public LastName as String
end class
public class UserService
public function AddUser(Command as UserAddCommand) as Response
end class
用户ID
甚至DateCreated
都是在AddUser
服务方式的服务端创建的。
答案 1 :(得分:0)
希望我的意见对你或你的开发范围有意义。
好吧,我认为你的guid应该在你的add方法中生成,而不是在对象属性中传递。我给方法提供了判断生成的guid是否有效的可能性,并且你可以尝试使用新的guid,直到你获得有效的guid。
我不知道是否可以在此工具中隐藏此内容,因为您已将ID标记为DataMember,这意味着您的属性可用。
如果以前的消化对你有意义,那么就忘记这个方法中的这个值。如果不是我能看到的唯一解决方案是创建一个没有这个成员的新类。
希望它可以帮到你
答案 2 :(得分:0)
如果删除[DataMember]属性,则WCF将无法使用GUID,因为它不会被序列化。 但是,如果它们与后端数据库绑定,那么当在服务的任何一侧使用用户对象时,这会出现问题吗?你不是一直在创建新的用户对象吗?