标签: entity-framework-5

是否有技术原因在.NET4.0上不完全支持EF 5?

我想将我的应用程序升级到EF 5,以利用对枚举空间等的支持等功能.但是,除非我转移到.Net 4.5,否则我无法升级.

我想知道.Net 4.5使用的是什么功能,它在.Net 4.0中无法完成?

.net .net-4.5 entity-framework-5

10
推荐指数
1
解决办法
3870
查看次数

如何使用EF 5.0 Code First启用并发检查?

我想在原子操作中进行check-then-update.我正在使用dbcontext来管理事务.如果记录被另一个线程修改但是没有抛出异常,我期望得到一个异常.任何帮助,将不胜感激.这是我的输出:

Thread-4: Reading...
Thread-5: Reading...
Thread-5: Updating destination 1
Thread-4: Updating destination 1
Thread-4: SaveChanges
Thread-5: SaveChanges
Run Code Online (Sandbox Code Playgroud)

这是我的代码片段:

public static void Main(string[] args)
{
    PopulateData();
    (new Thread(UpdateDestination1)).Start();
    (new Thread(UpdateDestination1)).Start();
}

public static void UpdateDestination1()
{
    using (var context1 = new BreakAwayContext())
    {
        Console.WriteLine("Thread-{0}: Reading...", Thread.CurrentThread.ManagedThreadId);
        var d = context1.Destinations.FirstOrDefault();
        Console.WriteLine("Thread-{0}: Updating destination {1}", Thread.CurrentThread.ManagedThreadId, d.DestinationId);
        d.Name = "Thread-" + Thread.CurrentThread.ManagedThreadId;
        try
        {
            context1.SaveChanges();
            Console.WriteLine("Thread-{0}: SaveChanges", Thread.CurrentThread.ManagedThreadId);
        }
        catch (OptimisticConcurrencyException)
        {
            Console.WriteLine("OptimisticConcurrencyException!!!");
            throw;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# optimistic-concurrency entity-framework-5

10
推荐指数
1
解决办法
7252
查看次数

实体框架可以在没有交集对象的情况下处理多对多关系吗?

使用数据库第一个模型:假设我们有经典的表Student,CourseStudentCourse(后者显然有FKS到StudentCourse).

如果将此模型导入EF,您将获得为每个模型生成的对象.在StudentCourse班将各自拥有的集合StudentCourses,从中你需要跳到另一个关系去的CourseStudent分别.

我希望以这样的方式生成代码,使得底层交集表是不可见的,即Student具有集合Courses,并且Course具有集合Students.我已经在其他ORM软件(特别是TopLink)中看到了这一点.可以在EF中完成吗?

c# entity-framework ef-database-first entity-framework-5

10
推荐指数
1
解决办法
5797
查看次数

EntityFramework 4升级到5,lambda不可用

我已将我的"entityframework 4"项目升级到5.我想在Include中使用lambda表达式(我的动机是suplant字符串定义)括号.

在这个momemnt我有:

context.WarrantyContract.Include("Car");
Run Code Online (Sandbox Code Playgroud)

并希望实现这一目标:

context.WarrantyContract.Include(w => w.Car);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试更换字符串时,视觉工作室无法识别我的意愿.

我会感谢任何正确的方向.

entity-framework-5

10
推荐指数
1
解决办法
2521
查看次数

如何使用ELMAH MVC记录EntityValidation错误?

我一直在使用MVC4和EF5.x编写应用程序,并使用ELMAH记录异常以供审阅.我们最近发布了该应用程序,正如预期的那样,ELMAH日志填满了几十个例外.很棒(而不是)!问题是其中一个例外是

System.Data.Entity.Validation.DbEntityValidationException
Validation failed for one or more entities. 
See 'EntityValidationErrors' property for more details.
Run Code Online (Sandbox Code Playgroud)

当然,没有办法查看EntityValidationErrors属性以获取更多详细信息,并且堆栈跟踪包装到我的SubmitChanges()

我知道ELMAH有能力允许我们提出自己的异常,并以某种方式定制记录的内容和方式.不幸的是,我对ELMAH和MVC仍然很陌生,谷歌搜索没有发现任何相关内容.我确实找到了一篇关于记录EntityValidationErrors 的博客文章,作者特别提到他将在ELMAH中发布如何这样做,但是发布于2012年9月,从那时起我就没有看到任何内容.

任何帮助将不胜感激!

elmah asp.net-mvc-4 entity-framework-5 elmah.mvc

10
推荐指数
2
解决办法
2220
查看次数

EF Lambda:Include路径表达式必须引用导航属性

这是我的表达:

Course course = db.Courses
  .Include(
    i => i.Modules.Where(m => m.IsDeleted == false)
      .Select(s => s.Chapters.Where(c => c.IsDeleted == false))
  ).Include(i => i.Lab).Single(x => x.Id == id);
Run Code Online (Sandbox Code Playgroud)

我知道原因在于Where(m => m.IsDeleted == false)模块部分,但为什么会导致错误?更重要的是,我该如何解决?

如果我删除where子句它工作正常,但我想过滤掉已删除的模块.

c# lambda entity-framework asp.net-mvc-3 entity-framework-5

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

实体框架和SQL Server 2012分页

SQL Server 2012引入了一种更有效的使用FETCH和OFFSET进行分页的机制,这可能会对使用大量分页的应用程序的性能产生很大影响.Entity Framework 5是否支持此功能?因此,如果我使用EF来翻页使用Take + Skip,如果EF针对的是SQL Server 2012,那么LINQ查询会转换为新的2012 TSQL吗?

entity-framework sql-server-2012 entity-framework-5

9
推荐指数
2
解决办法
3048
查看次数

加载在另一个DbContext中进行的更改

我有一个WPF应用程序,其中包含一个网格,其中包含我使用EF加载的数据列表.某些其他窗口可以更改网格上加载的相同数据,但使用不同的dbcontext实例.如何查看网格上已更改的数据?我知道我可以刷新一个实体ctx.Entry<MyEntity>(instance).Reload();- 但我希望看到所有的变化,无论我做什么,我只看到旧的价值观.在这种情况下,我既不能使用AsNoTracking也不能创建新DbContext实例.

entity-framework ef-code-first entity-framework-5

9
推荐指数
1
解决办法
3225
查看次数

DbGeography.PointFromText 24141:预计在某个位置有一个数字

我有WCF REST服务,其中包含以下代码

var geo = DbGeography.PointFromText(string.Format("POINT({0} {1})", longitude, latitude), DbGeography.DefaultCoordinateSystemId);
Run Code Online (Sandbox Code Playgroud)

单元测试工作正常,但是当我从客户端或HTTP debuder调用此代码时,提供纬度和经度的任何值exept 0,它会失败,但异常:

"24141: A number is expected at position X of the input. The input has ,XXXXXX."
   at Microsoft.SqlServer.Types.WellKnownTextReader.RecognizeDouble()
   at Microsoft.SqlServer.Types.WellKnownTextReader.ParsePointText(Boolean parseParentheses)
   at Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType type)
   at Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType type, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.ParseText(OpenGisType type, SqlChars taggedText, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.GeographyFromText(OpenGisType type, SqlChars taggedText, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.STPointFromText(SqlChars pointTaggedText, Int32 srid)
Run Code Online (Sandbox Code Playgroud)

latitude和longitute例如
lat:37.58336895 long:-122.40549454
lat:37.38931302 long:-122.16207476

我使用从SQLServer安装目录和SqlGeography.Point引用的Microsoft.SqlServer.Types来处理代码端的spartial数据.现在我想直接使用EF 5功能而不使用Microsoft.SqlServer.Types.无论有没有这个参考,都会失败.

知道什么是错的吗?

安装了.NET 4.5,SQL Server版本是Microsoft SQL Server 2008(SP3) - 10.0.5500.0(Intel X86)2011年9月22日00:28:06版权所有(c)1988-2008 Microsoft Corporation …

sql-server spatial .net-4.5 entity-framework-5

9
推荐指数
1
解决办法
4352
查看次数

将数据库视图映射到EF 5.0 Code First w/Migrations

我正在尝试将SQL视图映射到EF 5.0 Code First w/Migrations中的实体,以便在页面上显示一些基本信息,而无需查询多个表以获取该信息(目前需要大约20秒才能加载.不是很好.).我听说有可能这样做,但我无法弄清楚或在网上找到正确的方法.

编辑:要更深入地了解我对此问题的解决方案,请阅读主题的博客文章.

这是我的观点:

CREATE VIEW [dbo].[ClientStatistics]
AS
SELECT       ROW_NUMBER() OVER (Order By c.ID) as Row, c.LegacyID, c.ID, c.ClientName, slc.AccountManager, slc.Network,
                             (SELECT        MAX(CreatedDate) AS Expr1
                               FROM            dbo.DataPeriods
                               WHERE        (ClientID = c.ID)) AS LastDataReceived,
                             (SELECT        MAX(ApprovedDate) AS Expr1
                               FROM            dbo.DataPeriods AS DataPeriods_2
                               WHERE        (ClientID = c.ID)) AS LastApproved,
                             (SELECT        MAX(ReportProcessedDate) AS Expr1
                               FROM            dbo.DataPeriods AS DataPeriods_1
                               WHERE        (ClientID = c.ID)) AS LastReportProcesssed
FROM            dbo.Clients AS c INNER JOIN
                         dbo.SLClients AS slc ON …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first ef-migrations entity-framework-5

9
推荐指数
1
解决办法
1万
查看次数