给定EntityType,例如"Contact",如何从中派生出它所属的EntitySet的名称,即"Contacts"等多元化?
我要做的是将实体对象传递给方法并返回其中所有属性的名称.
我正在使用此代码获取所有道具名称:
return classObject.GetType().GetProperties();
Run Code Online (Sandbox Code Playgroud)
问题是,当我将它与Entity Object一起使用时,此代码将"EntityKey"和"EntityState"作为属性返回.
有什么办法吗?
Thanx提前
我正在尝试使用Entity Framework 6更新记录,代码优先,没有流畅的映射或像Automapper这样的工具.
entity(Employee)具有与之关联的其他复合属性,如Addreess(collection),Department
它也是从一个名为的基础继承的 User
save方法如下,_dbContext作为DbConext实现
public bool UpdateEmployee(Employee employee)
{
var entity = _dbContext.Employees.Where(c => c.Id == employee.Id).AsQueryable().FirstOrDefault();
if (entity == null)
{
_dbContext.Employees.Add(employee);
}
else
{
_dbContext.Entry(employee).State = EntityState.Modified; // <- Exception raised here
_dbContext.Employees.Attach(employee);
}
return _dbContext.SaveChanges() > 0;
}
Run Code Online (Sandbox Code Playgroud)
我一直收到错误:
附加类型的实体失败,因为相同类型的另一个实体已具有相同的主键值.如果图中的任何实体具有冲突的键值,则在使用"附加"方法或将实体的状态设置为"未更改"或"已修改"时,可能会发生这种情况.这可能是因为某些实体是新的并且尚未收到数据库生成的键值.在这种情况下,使用"添加"方法或"已添加"实体状态来跟踪图形,然后根据需要将非新实体的状态设置为"未更改"或"已修改".
我尝试过以下方法:
EntityState.ModifiedAsNoTracking()查询对象是否存在(没有例外,但DB没有更新) - /sf/answers/1625960101/_dbContext.Users而不是Employee实体进行保存 - /sf/answers/1790294411/现在这些都不适合我.
对于那些不能在我的情况下工作的解决方案,我有什么问题?