Questions tagged «entity-framework»

有关ADO.NET实体框架的问题,请参阅.NET Framework的对象关系映射(ORM)工具。如果适用,请添加特定于版本的标签。请勿对实体框架核心问题使用此标签。请改用entity-framework-core。

11
实体框架在运行时更改连接
我有一个引用我的模型和DAL程序集的Web API项目。向用户显示一个登录屏幕,他可以在其中选择不同的数据库。 我建立连接字符串如下: public void Connect(Database database) { //Build an SQL connection string SqlConnectionStringBuilder sqlString = new SqlConnectionStringBuilder() { DataSource = database.Server, InitialCatalog = database.Catalog, UserID = database.Username, Password = database.Password, }; //Build an entity framework connection string EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder() { Provider = database.Provider, Metadata = Settings.Default.Metadata, …

3
实体框架6事务回滚
使用EF6,您可以使用新交易,例如: using (var context = new PostEntityContainer()) { using (var dbcxtransaction = context.Database.BeginTransaction()) { try { PostInformation NewPost = new PostInformation() { PostId = 101, Content = "This is my first Post related to Entity Model", Title = "Transaction in EF 6 beta" }; context.Post_Details.Add(NewPost); context.SaveChanges(); PostAdditionalInformation PostInformation = new …

5
多个添加的实体可能具有相同的主键
这是我的3个实体模型:Route,Location和LocationInRoute。 以下方法失败并在提交时获取异常: public static Route InsertRouteIfNotExists(Guid companyId, IListLocation> locations) { //Loop on locations and insert it without commit InsertLocations(companyId, routesOrLocations); RouteRepository routeRep = new RouteRepository(); Route route = routeRep.FindRoute(companyId, locations); if (route == null) { route = new Route() { CompanyId = companyId, IsDeleted = false }; routeRep.Insert(route); LocationInRouteRepository locInRouteRep …

5
创建1000个实体框架对象时应何时调用SaveChanges()?(例如在导入过程中)
我正在运行一个导入,每次运行都会有1000条记录。只是根据我的假设寻找一些确认: 以下哪一项最有意义: 运行SaveChanges()每个AddToClassName()电话。 SaveChanges()每n个AddToClassName()电话运行一次。 运行SaveChanges()后,所有的的AddToClassName()电话。 第一种选择可能很慢吧?由于它将需要分析内存中的EF对象,生成SQL等。 我认为第二种选择是两全其美的,因为我们可以在该SaveChanges()调用周围包含try catch ,并且如果其中一个失败,一次仅丢失n条记录。也许将每个批次存储在List <>中。如果SaveChanges()呼叫成功,请删除列表。如果失败,则记录项目。 最后一个选项可能最终也会非常慢,因为每个单个EF对象都必须在内存中直到SaveChanges()被调用。如果保存失败,什么也不会提交,对吗?

5
在实体框架中排除更新属性
我一直在寻找在MVC中更新模型时将属性标记为不更改的正确方法。 例如,让我们看一下这个小模型: class Model { [Key] public Guid Id {get; set;} public Guid Token {get; set;} //... lots of properties here ... } 然后MVC创建的编辑方法如下所示: [HttpPost] public ActionResult Edit(Model model) { if (ModelState.IsValid) { db.Entry(model).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(model); } 现在,如果我的视图不包含令牌,则通过该编辑将其无效。 我正在寻找这样的东西: db.Entry(model).State = EntityState.Modified; db.Entry(model).Property(x => …

2
EF代码优先:如何获取随机行
如何建立查询以检索随机行? 如果我要用SQL编写它,那么我将对newid()进行排序,并从顶部砍掉n行。无论如何要先在EF代码中执行此操作? 我尝试创建使用newid()的查询并使用DbSet.SqlQuery()执行它。虽然有效,但并不是最干净的解决方案。 另外,尝试检索所有行并按新的GUID对它们进行排序。尽管行数很小,但是它仍然不是一个好的解决方案。 有任何想法吗?

8
延迟加载与急切加载
实体框架中的延迟加载是加载和访问相关实体时发生的默认现象。但是,急切加载是指对所有这些关系强制加载的做法。我遇到了一个问题:在什么情况下,优先加载比延迟加载更有利。提出这个问题,因为很明显,延迟加载对资源更友好,即使我们使用该ToList()方法,我们仍然可以利用延迟加载行为。但是,我认为延迟加载可能会增加对实际数据库的请求数量,这也许就是为什么有时开发人员使用Inlcude强制加载所有关系的方法。例如,当在MVC 5中使用Visual Studio自动脚手架时,在控制器中自动创建的Index方法始终使用“急切加载”,而我一直有一个问题,为什么Microsoft在这种情况下默认使用“急切加载”。 如果有人向我解释在什么情况下,优先加载比延迟加载更有利,以及在有比延迟加载更友好的资源的情况下我们为什么要使用它,我将不胜感激。

4
实体框架-“无法创建类型为'结算类型'的常量值……”错误
为什么会出现错误: 无法创建类型为“结算类型”的常量值。在此上下文中仅支持原始类型(例如Int32,String和Guid)。 当我尝试枚举以下Linq查询时? IEnumerable<string> searchList = GetSearchList(); using (HREntities entities = new HREntities()) { var myList = from person in entities.vSearchPeople where upperSearchList.All( (person.FirstName + person.LastName) .Contains).ToList(); } 更新:如果我尝试以下方法只是为了找出问题所在,则会收到相同的错误: where upperSearchList.All(arg => arg == arg) 看来问题出在All方法上,对不对?有什么建议?

7
使用Entity Framework Fluent API一对一的可选关系
我们想使用Entity Framework Code First使用一对一的可选关系。我们有两个实体。 public class PIIUser { public int Id { get; set; } public int? LoyaltyUserDetailId { get; set; } public LoyaltyUserDetail LoyaltyUserDetail { get; set; } } public class LoyaltyUserDetail { public int Id { get; set; } public double? AvailablePoints { get; set; } public int …


12
EntityTypeBuilder在EF Core中不包含ToTable的定义
我有以下示例代码: using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Models; namespace MySampleNamespace { public class MyDbContext : DbContext { public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } public DbSet<User> Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { new UserMap(modelBuilder.Entity<User>()); } public class UserMap { public UserMap(EntityTypeBuilder<User> entityBuilder) { entityBuilder.ToTable("User"); entityBuilder.Property(s => …

11
找不到命令“ dotnet ef”?
我在Arch VScode上使用.NET Core 2.0,并尝试使EF工具正常工作,但我不断收到该错误“找不到命令dotnet ef”。我只是到处看,所有建议都没有。因此,如果可以的话,请您提供帮助。 运行“ dotnet ef”的结果 [wasiim@wasiim-PC WebApiServerApp]$ dotnet ef --help Cannot find command 'dotnet ef', please run the following command to install dotnet tool install --global dotnet-ef [wasiim@wasiim-PC WebApiServerApp]$ dotnet tool list -g Package Id Version Commands --------------------------------------------------- dotnet-dev-certs 2.2.0 dotnet-dev-certs dotnet-ef 2.2.3 dotnet-ef [wasiim@wasiim-PC WebApiServerApp]$ 这是dotnet …

4
首先使用实体​​框架代码-如何为生产数据库运行Update-Database
我想知道如何为生产数据库运行“ Update-Database”命令。 “ Update-Database”数据库可以在本地计算机上正常运行,但是如何使它用于生产数据? 因此,如果我对应用程序进行了更改,然后通过Visual Studio运行“发布”,那么对于代码方面的工作就很好了,但是如何对生产数据运行“ Update-Database”命令。 希望这个问题有道理... 谢谢,


8
根据条件从列表中删除项目
我有一个这样的结构: public struct stuff { public int ID; public int quan; } 并要删除产品所在的ID位置1。 我目前正在尝试这样做: prods.Remove(new stuff{ prodID = 1}); 而且不起作用。 谢谢大家

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.