读书人

MVC更新数据库的有关问题

发布时间: 2013-03-01 18:33:02 作者: rapoo

求助:MVC更新数据库的问题
我在使用MVC构建网站时,使用EntityFramework将数据库表生成相应的View与Controller
[EdmEntityTypeAttribute(NamespaceName="WebSiteModel", Name="Manager")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Manager : EntityObject
{
#region Factory Method

/// <summary>
/// Create a new Manager object.
/// </summary>
public static Manager CreateManager(global::System.String userID, global::System.String passwd, global::System.String remark)
{
Manager manager = new Manager();
manager.UserID = userID;
manager.Passwd = passwd;
manager.Remark = remark;
return manager;
}

#endregion
#region Primitive Properties

/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String UserID
{
get
{
return _UserID;
}
set
{
OnUserIDChanging(value);
ReportPropertyChanging("UserID");
_UserID = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("UserID");
OnUserIDChanged();
}
}
private global::System.String _UserID;
partial void OnUserIDChanging(global::System.String value);


partial void OnUserIDChanged();



/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public global::System.String Remark
{
get
{
return _Remark;
}
set
{
OnRemarkChanging(value);
ReportPropertyChanging("Remark");
_Remark = StructuralObject.SetValidValue(value, true);
ReportPropertyChanged("Remark");
OnRemarkChanged();
}
}
private global::System.String _Remark;
partial void OnRemarkChanging(global::System.String value);
partial void OnRemarkChanged();

/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Passwd
{
get
{
return _Passwd;
}
set
{
OnPasswdChanging(value);
ReportPropertyChanging("Passwd");
_Passwd = StructuralObject.SetValidValue(value, false);


ReportPropertyChanged("Passwd");
OnPasswdChanged();
}
}
private global::System.String _Passwd;
partial void OnPasswdChanging(global::System.String value);
partial void OnPasswdChanged();

#endregion

}

[HttpPost]
public ActionResult Edit(Manager manager)
{
if (ModelState.IsValid)
{
db.Manager.Attach(manager);
db.ObjectStateManager.ChangeObjectState(manager, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(manager);
}

我在修改Remark字段时,总是提示Passwd不能为空,即使我把数据库里这个字段设为可空,提交后Passwd真为NULL了,有些不解,我如何只修改Remark字段而不修改Passwd?Manager是什么时候把Form的值都获取过来并赋值?当然我可以直接一个字段一个字段的赋值再做更新,可如果我的N个字段的话,一个个赋不是挺麻烦,我看EntityFramework挺好,直接生成代码就可进行增、删、改、查的工作,但成生的代码就那么几行,我应该怎么修改以使其灵活运用呢?

[解决办法]
EntityFramework可以逐字段更新吗?
先把对象取出来 在赋值 在更新。

读书人网 >asp.net

热点推荐