gpt4 book ai didi

entity-framework - EF 5.0 的通用存储库不起作用

转载 作者:行者123 更新时间:2023-12-04 08:30:43 25 4
gpt4 key购买 nike

我的实体有一个通用存储库,我的所有实体(由代码生成项生成)都有一个实现 IID 接口(interface)的个性化部分,此时我的所有实体都必须有一个 Int32 Id 属性。

所以,我的问题是更新,这是我的代码

public class RepositorioPersistencia<T> where T : class
{
public static bool Update(T entity)
{
try
{
using (var ctx = new FisioKinectEntities())
{
// here a get the Entity from the actual context
var currentEntity = ctx.Set<T>().Find(((BLL.Interfaces.IID)entity).Id);

var propertiesFromNewEntity = entity.GetType().GetProperties();
var propertiesFromCurrentEntity = currentEntity.GetType().GetProperties();

for (int i = 0; i < propertiesFromCurrentEntity.Length; i++)
{
//I'am trying to update my current entity with the values of the new entity
//but this code causes an exception
propertiesFromCurrentEntity[i].SetValue(currentEntity, propertiesFromNewEntity[i].GetValue(entity, null), null);
}
ctx.SaveChanges();
return true;
}

}
catch
{

return false;
}
}
}

有人可以帮助我吗?这让我发疯。

最佳答案

您可以使用 EF API 来更新实体的值,如下所示。

public static bool Update(T entity)
{
try
{
using (var ctx = new FisioKinectEntities())
{
var currentEntity = ctx.Set<T>().Find(((BLL.Interfaces.IID)entity).Id);

var entry = ctx.Entry(currentEntity);
entry.CurrentValues.SetValues(entity);

ctx.SaveChanges();
return true;
}
}
catch
{

return false;
}
}

关于entity-framework - EF 5.0 的通用存储库不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com