读书人

关于LinQ的更新有关问题请问为什么不

发布时间: 2013-07-01 12:33:04 作者: rapoo

关于LinQ的更新问题,请教为什么不能更新


public void NewsUpdate(r_NewsEntity newsEntity)
{
r_NewsEntity updateEntity = dataBase.r_News.Single(p => p.NewsID == newsEntity.NewsID);
updateEntity = newsEntity;
dataBase.SubmitChanges();
}


上面是方法,下面是实体类
更新的时候,无法更新。

[Serializable]
[Table(Name="r_News")]
//r_News表的实体
public class r_NewsEntity
{

#region 列名
[Column(Name = "NewsID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
public int NewsID
{
get;
set;
}

[Column(Name = "NewsTitle", DbType = "NVarChar(100) NOT NULL")]
public string NewsTitle
{
get;
set;
}

[Column(Name = "NewsTypeID", DbType = "Int NOT NULL")]
public int NewsTypeID
{
get;
set;
}

[Column(Name = "NewsImage", DbType = "NVarChar(50)")]
public string NewsImage
{
get;


set;
}

[Column(Name = "NewContent", DbType = "Text")]
public string NewContent
{
get;
set;
}
[Column(Name = "AttrFileName", DbType = "NVarChar(200)")]
public string AttrFileName
{
get;
set;
}
[Column(Name = "FileArr", DbType = "NVarChar(200)")]
public string FileArr
{
get;
set;
}
[Column(Name = "IsTop", DbType = "Bit NOT NULL")]
public bool IsTop
{
get;
set;
}

[Column(Name = "IsRestrict", DbType = "Bit NOT NULL")]
public bool IsRestrict
{
get;
set;
}

[Column(Name = "LastDate", DbType = "DateTime NOT NULL")]
public System.DateTime LastDate
{
get;
set;


}

[Column(Name = "Operator", DbType = "NVarChar(20) NOT NULL")]
public string Operator
{
get;
set;
}
#endregion

}



但另一个实体类用同样的方法可以更新

public void GuestBookUpdate(m_GuestBookEntity guestBookEntity)
{
m_GuestBookEntity updateEntity = dataBase.m_GuestBook.Single(p => p.GuestBookID == guestBookEntity.GuestBookID);
updateEntity = guestBookEntity;
dataBase.SubmitChanges();
}



[Serializable]
[Table(Name = "m_GuestBook")]
public class m_GuestBookEntity
{
[Column(Name = "GuestBookID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
public int GuestBookID
{
get;
set;
}
[Column(Name = "UserName", DbType = "NVarChar(50) NOT NULL")]
public string UserName
{
get;
set;
}
[Column(Name = "UserAddress", DbType = "NVarChar(100)")]
public string UserAddress


{
get;
set;
}
[Column(Name = "GuestTitle", DbType = "NVarChar(50)")]
public string GuestTitle
{
get;
set;
}
[Column(Name = "GuestContent", DbType = "Text NOT NULL")]
public string GuestContent
{
get;
set;
}
[Column(Name = "IsDisplay",DbType = "Bit NOT NULL")]
public bool IsDisplay
{
get;
set;
}
[Column(Name = "LastDate", DbType = "DateTime NOT NULL")]
public System.DateTime LastDate
{
get;
set;
}



上面这个就可以更新,无法理解,跪请高人指点。
[解决办法]
 public void NewsUpdate(r_NewsEntity newsEntity)
{
r_NewsEntity updateEntity = dataBase.r_News.Single(p => p.NewsID == newsEntity.NewsID);


updateEntity = newsEntity;
dataBase.SubmitChanges();
}



不要整个对象进行付值,你应该这样:
public void NewsUpdate(r_NewsEntity newsEntity)
{
r_NewsEntity updateEntity = dataBase.r_News.Single(p => p.NewsID == newsEntity.NewsID);。
updateEntity.NewsTitle = newsEntity.NewsTitle;
updateEntity.NewsTypeID= newsEntity.NewsTypeID;
updateEntity.NewsImage= newsEntity.NewsImage;
updateEntity.NewContent= newsEntity.NewContent;
//...
dataBase.SubmitChanges();
}

读书人网 >C#

热点推荐