【发布时间】:2019-11-20 19:23:34
【问题描述】:
这应该很简单,但我认为我的模型可能存在问题。我已经使用 linq 一年多了,我应该可以轻松完成这个简单的删除。请帮忙! 当我只想删除一条记录时,它会从数据库中删除两条记录
我有一个包含这些属性的数据库表。
Email, EmployeeName, StoreId
jsch@m.com,Joe Schneider,9
jsch@m.com,Joe Schneider,8
我需要删除 storeId 为 9 的 Joe Schneider
所以我运行这个简单的查询和删除过程。
var temp2 = difference[i];
var PersonToRemove = db.Permissions.SingleOrDefault(s => s.EmployeeName == temp2 && s.StoreId == Persons.StoreId);
if (PersonToRemove.EmployeeName != null)
{
db.Permissions.Remove(PersonToRemove);
db.SaveChanges();
}
我假设有人会说,嘿,您的模型不正确,不要将名称作为键,但我不能只是更改模型,因为应用程序的其他部分基于此模型并会造成巨大的休息。您能给我建议如何编辑 linq 查询以不删除两条记录吗?
型号
[Table("Permissions")]
public class Permissions
{
[Key]
public String EmployeeName { get; set; }
public string Department { get; set; }
public int? StoreId { get; set; }
public String Email { get; set; }
}
【问题讨论】:
-
两条记录具有相同的键(EmployeeName)。删除可能仅通过查看密钥来删除。
-
您是如何设法插入标记为键的重复值
-
@Eldar我不知道为什么它允许我插入标记为键的重复值,但它在 ssms 中以这种方式显示。 @Suphant Persons.StoreId 在我的方法中作为参数传递,在这种情况下该值为 9,因为我想删除 StoreId 为 9 的 Joe
-
我认为你有一个更大的重复键问题,这导致了这个问题
-
员工姓名对于 Key 来说似乎是个坏主意...人们可以有相同的姓名。你为什么不只有一个 Id identity int 列?
标签: c# .net asp.net-mvc linq