标签: entity-framework

无法更新EntitySet - 因为它具有DefiningQuery并且不存在<UpdateFunction>元素

我正在使用.net 3.5的Entity Framework 1.

我做的事情很简单:

var RoomDetails = context.Rooms.ToList();

foreach (var Room in Rooms)
{        
   Room.LastUpdated = DateTime.Now;
}
Run Code Online (Sandbox Code Playgroud)

我尝试这样做时收到此错误:

 context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法更新EntitySet - 因为它具有DefiningQuery并且<ModificationFunctionMapping>元素中不存在<UpdateFunction>元素以支持当前操作.

我正在对上下文进行大量更新而没有任何问题,只有当我尝试更新此特定实体时才会这样做.

我所有的搜索都显示了同样的事情,即我正在尝试更新的实体上没有声明主键.但是,我确实有一个主键声明...

.net c# asp.net entity-framework primary-key

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

实体框架VS LINQ to SQL VS ADO.NET与存储过程?

你会如何评价每一个:

  1. 性能
  2. 发展速度
  3. 整洁,直观,可维护的代码
  4. 灵活性
  5. 总体

我喜欢我的SQL,因此一直是ADO.NET和存储过程的忠实粉丝,但我最近玩过Linq to SQL,并且被写出我的DataAccess层的速度和决定花费的速度感到震惊有一段时间真正理解Linq to SQL或EF ......或者两者都没有?

我只是想检查一下,这些技术中没有一个很大的缺陷会让我的研究时间变得毫无用处.例如,性能非常糟糕,对于简单的应用程序来说它很酷,但只能带你到目前为止.

更新: 您可以专注于EF VS L2S VS SP而不是ORM VS SP.我主要对EF VS L2S感兴趣.但我很想将它们与存储过程进行比较,因为普通的SQl是我所了解的很多东西.

sql ado.net linq-to-entities entity-framework linq-to-sql

424
推荐指数
4
解决办法
17万
查看次数

EF迁移:回滚上次应用的迁移?

这看起来像一个非常常见的任务,但我找不到一个简单的方法来做到这一点.

我想撤消上次应用的迁移.我本来期待一个简单的命令,比如

PM> Update-Database -TargetMigration:"-1"
Run Code Online (Sandbox Code Playgroud)

相反,我能想出的就是:

PM> Get-Migrations

Retrieving migrations that have been applied to the target database.
201208012131302_Add-SystemCategory
201207311827468_CategoryIdIsLong
201207232247409_AutomaticMigration
201207211340509_AutomaticMigration
201207200025294_InitialCreate

PM> Update-Database -TargetMigration:"CategoryIdIsLong"
Run Code Online (Sandbox Code Playgroud)

(至少我可以只使用名称,跳过时间戳......)

有没有更简单的方法?

entity-framework database-migration entity-framework-4 ef-migrations

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

无法加载实体框架提供程序类型?

我正在尝试在我的机器上安装的TeamCity上运行我的测试.

System.InvalidOperationException:

实体框架提供程序类型" 为" 'ADO.NET提供程序无法加载.确保提供程序程序集可用于正在运行的应用程序.System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServerVersion=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'System.Data.SqlClient

有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882.

我没有参考System.Data.Entity任何我在codeplex上建议升级到EF6的项目.

所以,我不知道为什么我会得到这个例外.当我从VS运行测试时,我没有得到任何这样的异常.

我确实尝试将CopyLocal设置为false然后再次设置为true ..但这似乎也不起作用.

更新

我的app.config有以下内容.这会导致一些我不理解的行为吗?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我在teamcity中得到以下stacktrace.

[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' …
Run Code Online (Sandbox Code Playgroud)

c# mstest entity-framework teamcity-7.1 entity-framework-6

406
推荐指数
11
解决办法
26万
查看次数

每个网络请求一个DbContext ...为什么?

我一直在阅读很多文章,解释如何设置实体框架,DbContext以便每个HTTP Web请求只使用各种DI框架创建和使用一个.

为什么这首先是一个好主意?使用这种方法有什么好处?在某些情况下这是个好主意吗?在使用DbContext存储库方法调用实例化s 时,您是否可以使用此技术执行某些操作?

c# asp.net entity-framework dependency-injection dbcontext

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

无法在LINQ to Entities查询中构造实体

存在由实体框架生成的称为产品的实体类型.我写了这个查询

public IQueryable<Product> GetProducts(int categoryID)
{
    return from p in db.Products
           where p.CategoryID== categoryID
           select new Product { Name = p.Name};
}
Run Code Online (Sandbox Code Playgroud)

下面的代码引发以下错误:

"无法在LINQ to Entities查询中构造实体或复杂类型Shop.Product"

var products = productRepository.GetProducts(1).Tolist();
Run Code Online (Sandbox Code Playgroud)

但是,当我使用select p而不是select new Product { Name = p.Name};它正常工作.

如何预先形成自定义选择部分?

c# entity-framework

373
推荐指数
5
解决办法
22万
查看次数

将datetime2数据类型转换为日期时间数据类型会导致超出范围的值

我有一个包含5列的数据表,其中一行填充数据,然后通过事务保存到数据库.

保存时,会返回错误:

将datetime2数据类型转换为日期时间数据类型会导致超出范围的值

这意味着,正如所读,我的数据表有一种类型DateTime2和我的数据库a DateTime; 那是错的.

日期列设置为DateTime如下所示:

new DataColumn("myDate", Type.GetType("System.DateTime"))

这可以在代码中解决,还是必须在数据库级别上进行更改?

c# sql-server orm datetime entity-framework

356
推荐指数
10
解决办法
34万
查看次数

为什么在许多/一对多的关系中使用ICollection而不是IEnumerable或List <T>?

我在教程中看到了很多,导航属性为ICollection<T>.

这是实体框架的强制性要求吗?我可以用IEnumerable吗?

使用ICollection代替IEnumerable甚至是什么的主要目的是List<T>什么?

c# entity-framework icollection code-first

342
推荐指数
6
解决办法
16万
查看次数

使用Transactions或SaveChanges(false)和AcceptAllChanges()?

我一直在研究交易似乎因为我通过他们照顾自己的EF只要falseSaveChanges(),然后调用AcceptAllChanges(),如果没有错误:

SaveChanges(false);
// ...
AcceptAllChanges();
Run Code Online (Sandbox Code Playgroud)

如果事情变坏怎么办?我不必回滚,或者一旦我的方法超出范围,交易结束了吗?

在事务中途分配的任何indentiy列会发生什么?我认为如果其他人在我的事情发生之前添加了一条记录,那么这意味着会有一个缺失的身份值.

有没有理由TransactionScope在我的代码中使用标准类?

c# entity-framework transactions

340
推荐指数
2
解决办法
27万
查看次数

实体框架 - 包含多个属性级别

Include()方法适用于对象列表.但是,如果我需要深入两个级别呢?例如,下面的方法将返回ApplicationServers,其中包含此处显示的包含属性.但是,ApplicationsWithOverrideGroup是另一个容纳其他复杂对象的容器.我也可以在该属性上执行Include()吗?或者我如何才能完全加载该属性?

现在看来,这个方法:

public IEnumerable<ApplicationServer> GetAll()
{
    return this.Database.ApplicationServers
        .Include(x => x.ApplicationsWithOverrideGroup)                
        .Include(x => x.ApplicationWithGroupToForceInstallList)
        .Include(x => x.CustomVariableGroups)                
        .ToList();
}
Run Code Online (Sandbox Code Playgroud)

将仅填充Enabled属性(下方),而不填充Application或CustomVariableGroup属性(如下所示).我该如何实现这一目标?

public class ApplicationWithOverrideVariableGroup : EntityBase
{
    public bool Enabled { get; set; }
    public Application Application { get; set; }
    public CustomVariableGroup CustomVariableGroup { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

335
推荐指数
7
解决办法
20万
查看次数