使用LINQ-to-SQL时,我仍然遇到一些问题。 我也在寻找自己的答案,但是这个问题很难解决,我找不到合适的关键字来查找它。
我这里有这个代码:
public CustomTask SaveTask(string token, CustomTask task)
{
TrackingDataContext dataConext = new TrackingDataContext();
//Check the token for security
if (SessionTokenBase.Instance.ExistsToken(Convert.ToInt32(token)) == null) return null;
//Populates the Task - the "real" Linq to SQL object
Task t = new Task();
t.Title = task.Title;
t.Description = task.Description;
//****The next 4 lines are important****
if (task.Severity != null)
t.Severity = task.Severity;
else
t.SeverityID = task.SeverityID;
t.StateID = task.StateID;
if (task.TeamMember != null)
t.TeamMember = task.TeamMember;
else
t.ReporterID = task.ReporterID;
if (task.ReporterTeam != null)
t.Team = task.ReporterTeam;
else
t.ReporterTeamID = task.ReporterTeamID;
//Saves/Updates the task
dataConext.Tasks.InsertOnSubmit(t);
dataConext.SubmitChanges();
task.ID = t.ID;
return task;
}
问题在于我发送严重性,然后,当我遇到这种情况时:
调用方法之前DB State:
ID名称 1高 2中等 3低
调用方法选择“medium”作为严重性
调用方法后的DB State: ID名称 1高 2中等 3低 4中等
重点是: - 为什么要复制这个条目?
关于代码的一些解释: CustomTask与Task几乎相同,但我遇到了序列化问题,可以看出here
编辑:刚发现代码正在发送Severity对象而不是ID,我将更改它。但它复制条目仍然很奇怪:(
Edit2:由于新信息而更新了问题
答案 0 :(得分:0)
问题是服务是Rest,因此每次调用都会创建一个新的DataContext,从而生成重复的条目。 使用ID可以避免此问题。