我想從SQl中選擇幾列,然後更新該表。Linq更新,特定選擇列爲空
我用
var xyz_repl= from mfrepl in xyz_repl_alias
where (mfrepl.RPT_ID == sched_data.NOTIF_RPT_ID)
&& (mfrepl.NOTIF_ID == "" || mfrepl.NOTIF_ID == null)
select mfrepl;
這也我的工作,但後來它不工作,如果有一列是NULL.Then我試圖只選擇特定的列,但現在卻變成只讀的,我無法更新表。
我這樣做:
var xyz_repl= from mfrepl in xyz_repl_alias
where (mfrepl.RPT_ID == sched_data.NOTIF_RPT_ID)
&& (mfrepl.NOTIF_ID == "" || mfrepl.NOTIF_ID == null)
select new
{
mfrepl.NOTIF_ID,
mfrepl.REPL_DTM,
mfrepl.REPL_TYPE,
mfrepl.RPT_ID,
mfrepl.RPT_VERS
} ;
注意 - 它現在顯示爲匿名type.What我需要做任何suugestion?
UPDATE 我增加了一個類,即:
public class MyPoco
{
public string NOTIF_ID { get; set; }
public DateTime REPL_DTM { get; set; }
public string REPL_TYPE { get; set; }
public string RPT_ID { get; set; }
public string RPT_VERS { get; set; }
}
,改變了我的代碼
var xyz_repl = from mfrepl in xyz_repl_alias
where (mfrepl.RPT_ID == sched_data.NOTIF_RPT_ID) && (mfrepl.NOTIF_ID == "" || mfrepl.NOTIF_ID == null)
select new MyPoco {
NOTIF_ID=mfrepl.NOTIF_ID,
REPL_DTM=mfrepl.REPL_DTM,
REPL_TYPE=mfrepl.REPL_TYPE,
RPT_ID=mfrepl.RPT_ID,
RPT_VERS=mfrepl.RPT_VERS };
但現在
db.SubmitChanges(); is not working.It won`t update databse now.Any suggestion.
如果你的數據庫列可空,那麼你相應的類類型應可爲空也。這將防止該問題,因此您不必選擇匿名類型。 – mattytommo
@mattytommo我加了CanBeNull = true但沒用。我不想獲取所有的列,因爲很多列在後面的程序中沒用,並且包含大量數據。 – v2v2
我不知道這是否會對你有幫助:在'new'裏面,你可以控制空字段並給它們一個默認值。例如'new'中的一個字段:'REPL_DTM = mfrepl.REPL_DTM == null? false:mfrepl.REPL_TYPE;' – mggSoft