使用 S#arp 架构 1.0RC...
我有一个控制器,它似乎永远不会更新我的一个属性。
我的类是具有 Manager 属性的 User 抽象类。Manager 是 User 的子类,Employee 也是。
我将 Manager 的属性设置器声明为受保护,并为 AddManager 提供了一个方法。这样,我还可以控制经理从该实体的集合中拥有的用户。
我的问题是 ModelBinder 没有在回发中找到更新项目的 Manager 属性。如果我删除受保护的,它工作正常。添加受保护的背部:我没有汤。
以下哪一部分允许我保护我的 setter 并在回发时仍然获得控制器中的值?
谢谢...
这是强制性的映射(一些非细节的编辑):
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="">
<class name="Core.User, Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="Users" xmlns="urn:nhibernate-mapping-2.2">
<id name="Id" type="Int32" unsaved-value="0" column="UserId">
<generator class="identity" />
</id>
<le snip..>
<many-to-one access="field.camelcase-underscore" cascade="save-update" name="Manager" column="ManagerId" />
<joined-subclass name="Core.Employee, Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<key column="EmployeeId" />
</joined-subclass>
<joined-subclass name="Core.Approver, Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<key column="ManagerId" />
<bag name="Users" lazy="true" cascade="save-update" inverse="true">
<key column="ManagerId" />
<one-to-many class="Core.User, Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bag>
</joined-subclass>
我的多态类是
public abstract class User : Entity
{
public virtual string Name { get; set; }
private Manager _manager;
public virtual Manager Manager
{
get { return _manager; }
protected set { _manager = value; }
}
public virtual void SetManager(Manager manager)
{
if (_manager != null)
{
_manager.RemoveUser(this);
}
_manager = manager;
}
}
public class Manager : User
{
public Manager()
{
_users = new List<User>();
}
private IList<User> _users;
public virtual IList<User> Users
{
get { return _users; }
protected set { _users = value; }
}
public virtual void AddUser(User user)
{
if (_users.Contains(user)) return;
Users.Add(user);
user.SetManager(this);
}
public virtual void RemoveUser(User user)
{
if (!_users.Contains(user)) return;
Users.Remove(user);
user.SetManager(null);
}
}