我想将我的应用程序升级到EF 5,以利用对枚举空间等的支持等功能.但是,除非我转移到.Net 4.5,否则我无法升级.
我想知道.Net 4.5使用的是什么功能,它在.Net 4.0中无法完成?
我想在原子操作中进行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) 使用数据库第一个模型:假设我们有经典的表Student,Course和StudentCourse(后者显然有FKS到Student和Course).
如果将此模型导入EF,您将获得为每个模型生成的对象.在Student和Course班将各自拥有的集合StudentCourses,从中你需要跳到另一个关系去的Course或Student分别.
我希望以这样的方式生成代码,使得底层交集表是不可见的,即Student具有集合Courses,并且Course具有集合Students.我已经在其他ORM软件(特别是TopLink)中看到了这一点.可以在EF中完成吗?
我已将我的"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)
但是当我尝试更换字符串时,视觉工作室无法识别我的意愿.
我会感谢任何正确的方向.
我一直在使用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月,从那时起我就没有看到任何内容.
任何帮助将不胜感激!
这是我的表达:
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子句它工作正常,但我想过滤掉已删除的模块.
SQL Server 2012引入了一种更有效的使用FETCH和OFFSET进行分页的机制,这可能会对使用大量分页的应用程序的性能产生很大影响.Entity Framework 5是否支持此功能?因此,如果我使用EF来翻页使用Take + Skip,如果EF针对的是SQL Server 2012,那么LINQ查询会转换为新的2012 TSQL吗?
我有一个WPF应用程序,其中包含一个网格,其中包含我使用EF加载的数据列表.某些其他窗口可以更改网格上加载的相同数据,但使用不同的dbcontext实例.如何查看网格上已更改的数据?我知道我可以刷新一个实体ctx.Entry<MyEntity>(instance).Reload();- 但我希望看到所有的变化,无论我做什么,我只看到旧的价值观.在这种情况下,我既不能使用AsNoTracking也不能创建新DbContext实例.
我有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视图映射到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