我正在使用 Fluent NHibernate 进行 NHibernate 映射,但现在我遇到了一个不知道如何解决的问题。下面是问题的简化版本。
我有一个用户类:
public class User {
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
这是关联的 Fluent NHibernate 类映射
public class UserMap : ClassMap<User> {
public UserMap() {
Id(x => x.Id);
Map(x => x.FirstName);
Map(x => x.LastName);
}
}
我有两个网络表单。一个表单允许我更改用户的名字,第二个表单允许我更改用户的姓氏。我想要实现的是一个简单的 SQL 语句,如下所示:
对于第一种形式:
UPDATE [users] SET firstname='new first name' WHERE id=1
对于第二种形式:
UPDATE [users] SET lastname='new last name' WHERE id=1
目前 NHibernate 在我的数据库上执行以下 SQL:
UPDATE [users] SET firstname=null, lastname='new last name' WHERE id=1
现实世界应用程序中的问题是,在某些大对象上更新的属性太多(以及访问限制),并且更新整个对象似乎毫无意义,而我想要/被允许做的只是更新单一属性。
我希望有人可以就我如何实现这一点提供一些建议,或者指出我解决这个问题的正确方向。