Asp.net mvc 4 为什么实体框架将重复记录插入表中
出于某种原因,.Net实体框架正在将多个重复记录插入数据库中名为groups的表中。这似乎是在用户登录并访问组索引页时发生的 下面是我的索引页控制器代码的代码片段,以及组的DataContext get方法和update方法 我没有看到这里有什么问题,因为我只是构建一个模型并将其返回到索引视图。有人有什么建议吗?我使用的是MVC4,实体框架6 记录的屏幕截图:像这样持续50行。 索引视图控制器 组管理器Get、GetAll、Add、Update函数 公共组Getint groupId {Asp.net mvc 4 为什么实体框架将重复记录插入表中,asp.net-mvc-4,entity-framework-6,Asp.net Mvc 4,Entity Framework 6,出于某种原因,.Net实体框架正在将多个重复记录插入数据库中名为groups的表中。这似乎是在用户登录并访问组索引页时发生的 下面是我的索引页控制器代码的代码片段,以及组的DataContext get方法和update方法 我没有看到这里有什么问题,因为我只是构建一个模型并将其返回到索引视图。有人有什么建议吗?我使用的是MVC4,实体框架6 记录的屏幕截图:像这样持续50行。 索引视图控制器 组管理器Get、GetAll、Add、Update函数 公共组Getint groupId {
try
{
var group = new Group();
var temp = _ctx.Groups.First(p => p.GroupId == groupId);
if (temp != null)
{
group.GroupId = temp.GroupId;
group.CompanyName = temp.CompanyName;
group.Email = temp.Email;
group.PhoneNumber = temp.PhoneNumber;
group.CreatedDate = temp.CreatedDate;
group.LastModifiedDate = temp.LastModifiedDate;
}
return group;
}
catch (Exception ex)
{
logger.Error("An Error occured getting a group", ex);
// Console.WriteLine("An Error occured getting a group" + System.Environment.NewLine + ex);
return null;
}
}
public List<Group> GetAllGroups()
{
try
{
var groupList = _ctx.Groups.OrderBy(p => p.CompanyName).ToList<Group>();
return groupList;
}
catch (Exception ex)
{
logger.Error("An Error occured getting groups", ex);
//Console.WriteLine("An Error occured getting groups" + System.Environment.NewLine + ex);
return null;
}
}
public int Add(Group eGroup)
{
int newGroupId;
try
{
_ctx.Groups.Add(eGroup);
_ctx.SaveChanges();
newGroupId = eGroup.GroupId;
return newGroupId;
}
catch (Exception ex)
{
logger.Error("An Error occured adding group", ex);
//Console.WriteLine("An Error occured adding group" + System.Environment.NewLine + ex);
return -1;
}
}
public void UpdateGroup(Group eGroup)
{
try
{
var updev = _ctx.Groups.First(p => p.GroupId == eGroup.GroupId);
if (updev.CompanyName != eGroup.CompanyName)
updev.CompanyName = eGroup.CompanyName;
if (updev.Email != eGroup.Email)
updev.Email = eGroup.Email;
if (updev.PhoneNumber != eGroup.PhoneNumber)
updev.PhoneNumber = eGroup.PhoneNumber;
updev.LastModifiedDate = DateTime.Now;
_ctx.SaveChanges();
}
catch (Exception ex)
{
logger.Error("An Error occured updating group", ex);
// Console.WriteLine("An Error occured updating group" + System.Environment.NewLine + ex);
return;
}
}
问题似乎不在你发布的这段代码中。我相信这可能是在你用来填充Add或Update方法对象的某个方法中。我的意思是:User.City=new CityToronto;而不是User.CityID=50;第一个方法将在City表中创建一个新记录。我相信在你代码的其他地方也会发生同样的情况。如果你确定不会发生这种情况,请忽略注释。酷,我会四处看看,看看我是否在这样做。我查看了我的代码,我没有这种类型的用户的实例。City=new CityToronto;好的,那么忽略我的注释。我这样说是因为每当我看到这样的错误,我总是会发现这样的错误。我也有同样的问题。当我的代码通过r this.Context.SaveChanges;DB表中的记录被写入两次。
try
{
var group = new Group();
var temp = _ctx.Groups.First(p => p.GroupId == groupId);
if (temp != null)
{
group.GroupId = temp.GroupId;
group.CompanyName = temp.CompanyName;
group.Email = temp.Email;
group.PhoneNumber = temp.PhoneNumber;
group.CreatedDate = temp.CreatedDate;
group.LastModifiedDate = temp.LastModifiedDate;
}
return group;
}
catch (Exception ex)
{
logger.Error("An Error occured getting a group", ex);
// Console.WriteLine("An Error occured getting a group" + System.Environment.NewLine + ex);
return null;
}
}
public List<Group> GetAllGroups()
{
try
{
var groupList = _ctx.Groups.OrderBy(p => p.CompanyName).ToList<Group>();
return groupList;
}
catch (Exception ex)
{
logger.Error("An Error occured getting groups", ex);
//Console.WriteLine("An Error occured getting groups" + System.Environment.NewLine + ex);
return null;
}
}
public int Add(Group eGroup)
{
int newGroupId;
try
{
_ctx.Groups.Add(eGroup);
_ctx.SaveChanges();
newGroupId = eGroup.GroupId;
return newGroupId;
}
catch (Exception ex)
{
logger.Error("An Error occured adding group", ex);
//Console.WriteLine("An Error occured adding group" + System.Environment.NewLine + ex);
return -1;
}
}
public void UpdateGroup(Group eGroup)
{
try
{
var updev = _ctx.Groups.First(p => p.GroupId == eGroup.GroupId);
if (updev.CompanyName != eGroup.CompanyName)
updev.CompanyName = eGroup.CompanyName;
if (updev.Email != eGroup.Email)
updev.Email = eGroup.Email;
if (updev.PhoneNumber != eGroup.PhoneNumber)
updev.PhoneNumber = eGroup.PhoneNumber;
updev.LastModifiedDate = DateTime.Now;
_ctx.SaveChanges();
}
catch (Exception ex)
{
logger.Error("An Error occured updating group", ex);
// Console.WriteLine("An Error occured updating group" + System.Environment.NewLine + ex);
return;
}
}