在我们的EF 5应用程序中,当我们在insert或update操作中遇到SQL Server死锁错误时,我们会立即重试该操作。然而,当我们尝试这样做时,我们得到了以下错误:
"Conflicting changes detected. This may happen when trying to insert multiple entities with the same key."
此错误不是来自SQL Server。这是一个EF 5错误。并且我们不会尝试插入具有相同密钥的多个实体。哦,我们并没有试图插入重复的行。然而,我怀疑这个错误意味着其他东西。但我不能完全确定我是否知道
这个问题非常类似于。然而,关于这一问题的决议:
似乎不适用,或者有点可疑,似乎不是解决问题的好方法。
基本上,我在遍历一个对象的泛型列表,并插入它们。使用MVC 2,EF 4与默认代码生成。
foreach(Requirement r in requirements)
{
var car = new CustomerAgreementRequirement();
car.CustomerAgreementId = viewModel.Agreement.CustomerAgreementId;
car.RequirementId = r.RequirementId;
我有一张销售收据表格,用的是EF4.3 ObjectContext。我正在努力弄清楚如何持有收据( EF ObjectContext中的实体),并从上下文中移出,并在用户想要它的时候取回它。这种情况是,只要销售收据表单关闭,上下文就会消失。问题是用户应该能够检索它并将其添加到当前上下文中。
要分离的代码
Serialize(receipt, savepath)
While Receipt.RECEIPTLINEs.Count > 0
Context.Detach(Receipt.RECEIPTLINEs.First)
End While
Context.Detach(Rece
我编写了一种使用实体框架将一些数据插入到db的方法,如下所示,该框架称为wcf服务
bool status=false;
MyDataContext dc = new MyDataContext();
var getData = dc.Register.FirstOrDefault(x => x.DeviceId == deviceId.Trim());
if (getData != null)
{
status = true;
}
我首先使用的是EF4.1代码。我不能使用非常简单的insert来保存相关实体ID,生成的SQL总是为任何相关实体插入NULL。示例代码如下。有没有人看到我做错了什么?它确实正确地插入了非实体属性,例如字符串。此外,我在一个DB初始化器类中有类似的代码来播种测试数据,它似乎工作得很好。
using (var ctx = new DataContext())
{
ctx.Users.Attach(existingUser);
// create item and add to context
我是stackoverflow的新用户,这是我的第一个问题,希望我不会违反任何规则:)……
在我使用EF4和UnitOfWork模式MVC3项目中,
添加新实体时,我必须检查新添加的实体和已存储在数据库中的实体,并计算新实体中的一列。
问题是,如果我从数据库中获取值,新添加的实体将不会被考虑在内。
我通过在每个实体插入后保存unitofwork来解决这个问题。但这意味着每次插入特定实体时都要保存上下文的当前状态。
我想知道这是否会在未来带来一些性能问题。如果是这样,有没有其他方法来解决这个问题?
这里是关于这个问题的相关代码(简化)
型号:
public class Group
{
在尝试使用N层实体框架中的存储过程时,我遇到了一些有趣的情况。我想确认一下,这些情况不是我们的实现所独有的,而不是,我想知道我们的解决方案是最好的还是有更好的解决方案。
映射要求:当使用带有映射存储过程的context.SaveChanges()时,必须将所有存储过程映射到给定实体;这意味着,如果映射了插入SP,但更新SP未被映射,则在试图处理更新时会出现异常,因为框架“无法在映射文件中找到UpdateFunctionMapping for EntityType 'PriceFileCustomerPrice‘”。我们只想映射那些必要的SPs,让框架处理其余的insert/upda
我创建了一个蓝色移动服务,它基本上由2个实体和2个TableControllers组成。这两个实体之间有1:1的关系。
public class Entity1 : EntityData
{
public int Value { get; set; }
public DateTime Date { get; set; }
public string Name { get; set; }
public virtual Entity2 Reference { get; set; }
}
public class Entity2 : EntityData
{
我在DbContext中使用EF4.3。
我有一个存储在缓存中的实体,因此在转换为列表并将其弹出到缓存之前,我需要立即加载必要的数据。
我的数据库是标准化的,所以数据分布在几个表中。基本实体是“用户”,用户可以是也可以不是“订阅者”,订阅者可以是“贡献者”、“成员”或“管理员”中的一种。
目前,由于我缺乏EF,Linq等人的知识,整个fetch不是很优雅。
public static User Get(Guid userId)
{
Guard.ThrowIfDefault(userId, "userId");
var r = n
我使用EF4.3,所以我指的是实体,但是它可以应用于任何包含属性的类。
我正在尝试弄清楚是否可以比较两个实体。为了清楚起见,每个实体都有被赋值的属性,假设实体是“客户”。
public partial class Customer
{
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
...
...
}
客户访问我的网站,输入一些详细信息'TypedCustomer‘。我对数据库进行检查,如果某些数据匹配,则从数据库'StoredCustomer‘
我在WCF数据服务中使用实体框架,我的数据库中有下表:
表合同
(varchar)byUser (varchar)isDeleted (位) Id (Int)名称
实体框架类
(int)Name(string)byUser(string)isDeleted(boolean) Id
每当用户插入/更新/删除合同(通过客户端应用程序)时,我需要记录是谁做的操作。
因此,我为insert/update/delete创建了存储过程,在执行插入/删除/更新时将从客户端接收用户名。
问题是,delete操作不发送执行操作的人员:
var ctx = Context;
var
如何知道持久化方法是否有效?我只能想到两种解决方案,但肯定有一些更直接或准备这一点。无论如何,我想知道是否有人知道这个解决方案的问题,还是更好的选择?谢谢?
当我使用时,我没有返回来检查该方法是否成功完成。(可能是布尔值,也可能是实体本身来检查id)
UserEntity e = new UserEntity();
e.setName("Name");
e.setAge(30);
em.persist(e);
Option#1 EntityManger包含方法
UserEntity e = new UserEntity();
e.setName("Name")
我在插入重复记录方面有着非常奇怪的情况。我正在根据某些条件检索记录,在修改了两个属性之后,我将再次重新插入整个对象集合,甚至不会更改对象的主键值。
但我没有得到预期的结果。嵌套在父集合中的所有集合从未完全添加到数据库中。
我不知道到底出了什么问题。我需要完全分离所有这些实体吗?我已经在使用NoTracking()检索实体,甚至在修改父实体的属性时分离它。
我的父集合是托运的,包含子实体作为列表"ConsignmentLine“
我的实体继承人是:
public class Consignment
{
public int ConsignmentId { get; set; }