标签: entity-framework-4

实体框架和DBContext问题

我被警告不要在我的应用程序中使用多个Entity Framework的DBEntityContext.原因是由于并发访问数据库而导致死锁的风险.

任何人都可以证实吗?如果这是真的,为DBContext实现Singleton对象是个好主意吗?

欢迎任何有关此问题的文章.

谢谢你的进步.

c# .net-4.0 entity-framework-4 database-concurrency

2
推荐指数
1
解决办法
3028
查看次数

实体框架代码首先是多对多的NullReference

我一直在su.Companies.Add(co)上得到一个NullReferenceException; 线.我认为,通过我的模型定义方式,它应该工作.自动完成,听起来像一个新手,完成这很好.我显然是EntityFramework的新手.

救命?

using (var db = new TicketdocketEntities())
{
  var su = new SiteUser { UserName = model.UserName };
  db.SiteUser.Add(su);
  var co = new Company { Name = "Hello" };
  su.Companies.Add(co);
  db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

楷模

public class Company
{
  [Key]
  public int CompanyId { get; set; }
  public string Name { get; set; }

  public virtual ICollection<SiteUser> SiteUsers { get; set; }
}

public class SiteUser
{
  [Key]
  public int SiteUserID { get; set; }
  public string UserName { get; …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-relationship entity-framework-4 ef-code-first entity-framework-4.1

2
推荐指数
1
解决办法
766
查看次数

什么时候应该使用实体框架?

我是Entity Framework的新手,当然,我在SOF上发现了很少关于目标用例的问题.

我来给你一些信息.我不是在与不同的数据库供应商或不同的数据库打交道; 只有一个,SQL Server 2008和数据库少于30个表.我是否真的需要重做事物并使用实体框架?

编辑:

感谢詹姆斯解决我的问题.所以我假设使用EF会增加开销并在背景中做一些我不知道的工作.这是MS的工作方式,所以我猜我的下一个问题是:

  1. 它是否也会影响性能?

  2. 它是否支持hierarchyid数据类型?

sql-server entity-framework entity-framework-4

2
推荐指数
1
解决办法
3017
查看次数

模式克服了Entity Framework中缺少ConflictMode.ContinueOnConflict的实现?

Linq To SQL DataContext有一个重载,SubmitChanges它允许在抛出Optimistic Concurrency Exception时继续更新,并为开发人员提供一种机制,以便在一个Try Catch块中解决之后的冲突.

甚至它的方法也WCFDataServicesContext有一个SaveChangedOptions.ContinueOnError参数,它 SaveChanges至少允许你在发生错误时继续更新并且保留未解决的冲突更新,以便你以后可以查看它们.

(1)为什么ObjectContext.SaveChanges方法没有这样的选择?

(2)是否存在任何会模仿Linq To SQL行为的更新模式?我在MSDN上找到的示例使得看起来好像一个Try Catch块会在多次更新的情况下看到你回家.但是这种模式不允许您单独调查每个冲突的更新:它只是提醒您第一次冲突,然后为您提供"在一次扫描中擦除表清理"的选项,以防止任何进一步的乐观并发异常浮出水面,知道是否存在以及您希望如何处理它们.

batch-processing optimistic-concurrency entity-framework-4

2
推荐指数
1
解决办法
542
查看次数

如何从实体框架中的Context中取消附加实体?

我使用EF 4.1 with Repository和DbContext .. POCO with T4 template.对于每个存储库,我使用单独的DbContext.

我收到此错误时,我需要更新具有相关属性的对象

An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
Run Code Online (Sandbox Code Playgroud)

我想我的问题是beacuse eventObj并且candidate是从不同的存储库创建的.

所以我试图用这段代码解决问题,但没有成功.

我的问题?

  • 我该如何摆脱这个错误?
  • 是否有可能从其背景中删除候选人?

    public void UpdateAddingCandidate(Event eventObj, Candidate candidate){
        Event updatedEvent = new Event();
        Candidate updatedCandidate = new Candidate();
        updatedEvent = eventObj;
        updatedCandidate = candidate;
        updatedEvent.Candidate = updatedCandidate;
        db.Entry(updatedEvent).State = EntityState.Modified;     
    }
    
    Run Code Online (Sandbox Code Playgroud)

编辑

    public void UpdateAddingCandidate(Event eventObj, Candidate candidate)
    {
        /*
        db.Events.AsNoTracking();
        db.Candidates.AsNoTracking();
        */
        db.Entry(eventObj).State = EntityState.Detached;
        db.Entry(candidate).State = EntityState.Detached;

        Event updatedEvent = …
Run Code Online (Sandbox Code Playgroud)

asp.net entity-framework repository-pattern entity-framework-4

2
推荐指数
1
解决办法
6751
查看次数

如何在C#中重置标识列?

我需要在MVC.net中以参数方式重置我的身份字段.我正在使用Linq和Entity Framework.

原因:我通过导入在表中插入了数千条记录.我在一段时间后再次导入记录,所以我的id字段值增加了很多

对于前者 在100000000中,所以我的字段数据类型是Big int,但是对于我的这个值来说还不够.所以我需要重置我的身份字段.

c# linq asp.net-mvc sql-server-2008 entity-framework-4

2
推荐指数
1
解决办法
4345
查看次数

如何将数组传递给执行存储命令?

如何将由逗号分隔的整数数组ExecuteStoreCommand作为参数传递给实体中我无法执行此操作:

this.ObjectContext.ExecuteStoreCommand("INSERT INTO SurveyPatientListMrns 
  (UserData, MrnId) SELECT DISTINCT '{0}' , MrnId 
FROM PatientVisits WHERE (FacilityId = {1})
AND (UnitId IN ({2}))", userData, facilityId, (string.Join(",", unitIds)));
Run Code Online (Sandbox Code Playgroud)

(string.Join(",", unitIds))是一个字符串,由于逗号,我无法将其转换为整数.我怎么能传递参数呢?

仅供参考,unitIds是一个整数数组

c# entity-framework-4

2
推荐指数
1
解决办法
1530
查看次数

来自两个数据库的实体框架模型

是否可以从两个数据库中创建实体模型,表中的所有关系都反映在模型中?你是怎样做的?

我指的是ADO.NET Entity Framework第4版.

entity-framework-4

2
推荐指数
1
解决办法
1313
查看次数

MySql 5和LINQ to Entities EF 4在跨网络查询时导致"对象必须实现IConvertible"

在2个不同的MySql安装上使用相同的MVC 3和C#代码以及相同MySql 5.5数据库的副本时.一个完美地工作,而另一个失败的"对象必须实现IConvertible"错误.当我针对本地PC的MySql安装运行查询时,查询总是运行良好,但是当我尝试从本地PC的Visual Studio 2010查询到我的Internet服务提供商的MySql安装中的同一数据库的副本时,我收到错误"对象必须实施IConvertible".我在代码中唯一更改的是web.config中的ConnectionString的Server Name,否则代码和数据库完全相同.注意:对ISP的MySql安装的所有其他查询完美地工作只有这一个特定查询不起作用.

在尝试对此进行故障排除几天后,我确信错误消息"对象必须实现IConvertible"与实际发生的事情无关,而且我的印象是我的ISP上的MySql配置可能会以某种方式导致此问题的原因如下:

  1. 如果这确实是代码中的"对象必须实现IConvertible"问题,那么无论我遇到哪个数据库安装,问题都会在代码中持续存在.

  2. 我已完全从我本地PC的工作副本中删除并重新创建了ISP的数据库,但仍然收到相同的错误.

  3. 最有趣的是,查询有3个嵌套的IEnumerable列表,这些列表都以与IEnumerables相同的方式设置,如果我在查询中注释掉这些嵌套列表中的任何一个,那么查询将成功针对ISP的DB运行.无论哪个嵌套列表被注释掉,只有2个或更少的嵌套列表然后查询到ISP的数据库工作.这就是我得出的结论,即ISP的MySql配置可能会以某种方式限制我的查询,因为我在查询本地PC的MySql安装时没有这个问题.错误消息似乎并不适用于实际发生的情况.同样,ISP的MySql安装的所有其他查询都能正常工作,但是它们都不包含超过2个嵌套的IEnumerable列表,其中此特定查询包含3个?

查询错误"对象必须实现IConvertible"

    Server Error in '/' Application.
    ________________________________________
    Object must implement IConvertible. 
    Description: An unhandled exception occurred during the execution of the current web request.             Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: System.InvalidCastException: Object must implement IConvertible.

    Source Error: 

    Line 392:
    Line 393:
    Line 394:            var query =
    Line 395:                  (from p in db.products
    Line 396:                   where p.ClientId …
Run Code Online (Sandbox Code Playgroud)

mysql linq-to-entities entity-framework-4 asp.net-mvc-3 connector-net

2
推荐指数
1
解决办法
1518
查看次数

实体框架查询过滤实现以获得最佳性能

正如标题所说,我将实体框架4.0用于财务应用程序.我有一个winform,我列出了我的所有支票(支票).但在该形式中,用户可以指定一些过滤器.

在此输入图像描述

如果用户没有应用任何过滤器,我可以像这样进行查询:

lista_cheques = db.Cheque.Include("Operacion").Include("Cliente").ToList();
datagridview.Datasource = lista_cheques;
Run Code Online (Sandbox Code Playgroud)

这很简单.但是当它应用过滤器时,问题会变得更大.

如您所见,用户可以使用过滤器查看特定客户的检查(检查),日期,银行,CUIT号,检查状态等.

现在,我的问题与查询中的性能有关.

我正在考虑将过滤器分开,如下所示:

lista_cheques = db.Cheque.Include("Operacion").Include("Cliente").Where(x => x.fecha_deposito == fecha).ToList();
lista_cheques = lista_cheques.Where(x => x.banco.id_banco = banco).ToList();
lista_cheques = lista_cheques.Where(x => x.Operacion.Cliente.id_cliente = id_cliente).ToList();
Run Code Online (Sandbox Code Playgroud)

翻译:fecha是日期Operacion是一组支票Cliente是客户.

通过这种方式,我正在进行查询,然后是来自该查询结果的查询,然后是来自该新结果的新查询.

我认为这种方式可能会产生很大的性能问题.我知道SQL Server优化查询.因此,如果我正在进行碎片查询,则优化器无法正常工作.

我想到的另一种方式,但它非常繁琐,是创建一个大的查询来处理每个可能的过滤器选择.

例如,另一个例子是这样的:

lista_cheques = db.Cheque.Include("Operacion").Include("Cliente").Where(x => x.fecha_deposito == fecha && x.banco.id_banco = banco && x.Operacion.Cliente.id_cliente = id_cliente).ToList();
Run Code Online (Sandbox Code Playgroud)

最大的问题是我需要很多组合才能处理所有过滤器的可能性.

好的,现在,我会在第一个代码示例中遇到性能问题吗?我在那里对数据库做了一个大的查询,然后我在对象列表中进行查询(我认为会更快).我是这个ORM的新手,这个列表必须处理很多注册表..

我有人可以给我一些建议吗?我弄得很乱,希望你能理解......

c# performance winforms entity-framework-4

2
推荐指数
1
解决办法
829
查看次数