entity-framework 相关问题

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

实体框架:迁移错误地添加了外键列两次

我正在将 EntityFramework 6.1.3 与 CodeFirst 用于 Asp.Net 应用程序。我有一个现有的表(“Users”),我试图在其中添加外键“GroupId”。 这就是课程(一切都......

回答 3 投票 0

EFCore:“字段列表”中存在未知列“p.player_furniture_item_wired_data_id”

我有一个 PlayerFurnitureItem 实体。它有一个可选的 PlayerFurnitureItemPlacementData,它有一个可选的 PlayerFurnitureItemWiredData。看来 EF 正在尝试寻找

回答 1 投票 0

表不存在就创建吗?

使用Entity Framework Core,如果表不存在,有没有办法创建它?即使在上下文中调用 EnsureCreated 也会抛出异常: DbSet 股票代码 { get;放 }

回答 5 投票 0

在存储库模式中删除需要先读取?

我看过关于存储库模式的好资源,例如视频存储库模式与 C# 和实体框架、Done Right 和 Aspnet Boilerplate。我知道存储库不应该有逻辑...

回答 2 投票 0

UpdateFromQuery - 处理可为空的数据库列

N.EntityFramework.Extensions 是否正确处理数据库可为空的列? 例如。有一个表 MyTable,其中有 2 个可为空的 nvarchar 列:col1、col2。 两列都有数据库填充的值(不是...

回答 1 投票 0

如何编写一个 Linq 查询来返回特定日期期间的行?

我正在使用 EF core 7 和 C# 在该模型中,一名员工有多个期间和多个票证。 我有以下课程: 公开课员工 { 公共字符串 EmployeeId { 获取;放; } ...

回答 1 投票 0

如何在 Azure Function .NET8 中配置 EF Core(与 Entra 应用程序身份验证隔离)?

我现在有一个问题给我带来了重大问题,并且我似乎无法在咨询文档或此处提出的类似问题中找到任何解决方案。我只有在

回答 1 投票 0

实体数据模型设计器不显示表格

我正在尝试通过现有数据库创建实体数据模型, 所以我在 Visual Studio 2010 中按照以下步骤操作: 添加新项目->实体数据模型 选择“从数据库生成” 选择一个连接...

回答 3 投票 0

如何使用实体框架安全地更改唯一键 - 数据库优先

我有一个包含一些组件数据的表,我在其中添加并自动生成了 Id 作为主键。但该组件有一个独特的属性,我想切换到使用它并删除

回答 1 投票 0

IO操作超时

我使用的查询拉回了大量填充的导航属性。本质上它看起来像这样: 使用( var context = new MyApplicationContext() ) { 数据库集 我使用的查询拉回了大量填充的导航属性。本质上它看起来像这样: using( var context = new MyApplicationContext() ) { DbSet<BaseTable> dbSet = context.Set<BaseTable>(); IQueryable<BaseTable> query = dbSet; query = query.Include(entity => entity.T.C); query = query.Include(entity => entity.TC.Select(tc => tc.T.M)); query = query.Include(entity => entity.TC); query = query.Include(entity => entity.W.FW.F.S); query = query.Include(entity => entity.W.FW.P); query = query.Include(entity => entity.W.PL.P); query = query.Include(entity => entity.W.PL); query = query.Include(entity => entity.W.E); query = query.Include(entity => entity.E); query = query.Where( set of conditions ); List<BaseTable> Loaded = query.ToList(); } 但是,运行此代码会产生错误 IO操作超时 [TimeoutException:IO操作超时] MySql.Data.MySqlClient.TimedStream.StopTimer() +168 MySql.Data.MySqlClient.TimedStream.Read(Byte[] 缓冲区,Int32 偏移量,Int32 计数) +148 System.IO.BufferedStream.Read(Byte[]数组,Int32偏移量,Int32计数)+262 MySql.Data.MySqlClient.MySqlStream.ReadFully(流流,Byte[]缓冲区,Int32偏移量,Int32计数)+86 MySql.Data.MySqlClient.MySqlStream.LoadPacket() +110 MySql.Data.MySqlClient.MySqlStream.ReadPacket() +59 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32&affectedRow,Int64&insertedId)+100 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementsId,Int32&affectedRows,Int64&insertedId)+54 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementsId,布尔力)+145 MySql.Data.MySqlClient.MySqlDataReader.NextResult() +524 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为)+1939 我怎样才能让这个查询有足够的时间加载? 您需要做的是增加命令超时属性。 在实体框架中,使用的上下文继承自DbContext。这是一个 IObjectContextAdapter,但不包含对 ObjectContext 方法的轻松访问。因此,为了访问命令超时属性,您需要遍历 Database 的 DbContext 属性。 using( var context = new MyApplicationContext() ) { DbSet<BaseTable> dbSet = context.Set<BaseTable>(); IQueryable<BaseTable> query = dbSet; //set an increased command timeout by accessing Database property //on the context context.Database.CommandTimeout = 300;//in seconds (5 minutes) query = query.Include(entity => entity.T.C); query = query.Include(entity => entity.TC.Select(tc => tc.T.M)); query = query.Include(entity => entity.TC); query = query.Include(entity => entity.W.FW.F.S); query = query.Include(entity => entity.W.FW.P); query = query.Include(entity => entity.W.PL.P); query = query.Include(entity => entity.W.PL); query = query.Include(entity => entity.W.E); query = query.Include(entity => entity.E); query = query.Where( set of conditions ); List<BaseTable> Loaded = query.ToList(); } 现在您的查询可以有足够的时间来提取大量数据(如有必要)。 在 web.config 的连接字符串中使用此代码 “default command timeout=0” "server=localhost;Database=Database;uid=;pwd=;Allow User Variables=True;Convert Zero Datetime=True;default command timeout=0" 只需在连接字符串中添加 default command timeout=0 之后尝试一下就可以了 “服务器=dev.mysql.database.azure.com;用户ID=abhi.tech;密码=Gupta;数据库=emp;默认命令超时=0”

回答 3 投票 0

使用 LinkPad 5 我无法加载 EF6 自定义 dll 并使用实体

我尝试使用 LinqPad 5 从我的解决方案访问现有的自定义 DbContext,并使用该测试\开发查询和代码。 (两年前我在一个类似的项目中也取得了同样的成绩) ...

回答 1 投票 0

删除实体而不在通用存储库模式实体框架中获取它

我正在尝试使用通用存储库模式从数据库中删除 Employee 实体,该数据库包含不同的表,例如 Employee、Project、Skills。 命名空间信息.存储库 { ...

回答 3 投票 0

始终从实体框架中的 DbSet 中排除某些行

我首先使用实体框架 6 和数据库。在当前的项目中,我的数据库中有一些行永远不应该由实体框架获取。假设我有这个简化的模型...

回答 2 投票 0

提交按钮未正确输入值

我在 cshtml 中有一个表单正在输入到模型中,但它不断跳过 for 代码块中添加的一些值,特别是 GroupPerDay 值 我在 cshtml 中有一个表单正在输入到模型中,但它不断跳过 for 代码块中添加的一些值,特别是 GroupPerDay 值 <form method="post" asp-action="Create" class="row g-3"> <div class="row g-3 align-items-center"> <div class="row-cols-auto"> <input type="text" hidden class="form-control-plaintext" value="@Model.Department.DepartmentId" asp-for="Department.DepartmentId" /> </div> </div> <div class="row g-3 align-items-center"> <div class="col-auto"> <label for="SubDate" class="col-form-label">NGÀY ĐĂNG KÝ: </label> </div> <div class="col-auto"> <input type="date" id="SubDate" asp-for="DayGroup.SubcriptionDate" class="form-control" /> <span asp-validation-for="DayGroup.SubcriptionDate" class="text-dark"></span> </div> </div> <div class="mb-3 row"> <div class="col-sm-3"> <input type="text" readonly class="form-control-plaintext" value="DS HỌ TÊN" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 1" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 2" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 3" /> </div> </div> @for (int i = 0; i < Model.Department.Persons.Count; i++) { int j = Model.Department.Persons[i].GroupPerDay.Count - 1; <div class="col-auto"> <input type="text" hidden readonly asp-for="Department.Persons[i].PersonId" value="@Model.Department.Persons[i].PersonId" /> <input type="text" hidden readonly asp-for="Department.Persons[i].Name" value="@Model.Department.Persons[i].Name" /> <input type="text" hidden readonly asp-for="Department.Persons[i].GroupPerDay[j].Id" value="@Model.Department.Persons[i].GroupPerDay[j].Id" /> </div> <div class="row"> <div class="col"> <input type="text" readonly class="form-control-plaintext" asp-for="Department.Persons[i].GroupPerDay[j].Person.Name" value="@Model.Department.Persons[i].GroupPerDay[j].Person.Name" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[j].Set1" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[j].Set2" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[j].Set3" /> </div> </div> } <div class="row g-3 align-items-center"> <div class="col-auto"> <button class="btn btn-primary" type="submit">Submit</button> </div> <div class="col-auto"> <a class="btn btn-danger" asp-controller="Home" asp-action="Index">Cancel</a> </div> </div> </form> 型号 public class CreateGroupViewModel { public string AppUserId { get; set; } public AppUser AppUser { get; set; } public Department Department { get; set; } public DayGroup DayGroup { get; set; } } public class DayGroup { public string Id { get; set; } public DateTime SubcriptionDate { get; set; } public Group Group { get; set; } public List<PersonInGroupPerDay> PersonInGroups { get; set; } } public class PersonInGroupPerDay { public string Id { get; set; } public DayGroup DayGroup { get; set; } public Person Person { get; set; } [DefaultValue(0)] public int Set1 { get; set; } [DefaultValue(0)] public int Set2 { get; set; } [DefaultValue(0)] public int Set3 { get; set; } } 输入表格 输入后的Post动作模型 我希望它将我输入的值添加到列表中 我试过了<input class="btn btn-primary" type="Submit" /> 甚至使用 Onclick 的 javascript 来调用函数,但它不起作用 如果您需要更多信息,我可以在评论中添加所需内容。 您只需为最后一个 Persons[i].GroupPerDay 项目添加输入字段。 int j = Model.Department.Persons[i].GroupPerDay.Count - 1; 我们还需要为剩余的 Persons[i].GroupPerDay 项目添加隐藏输入。 试试这个代码: <form method="post" asp-action="Create" class="row g-3"> <div class="row g-3 align-items-center"> <div class="row-cols-auto"> <input type="text" hidden class="form-control-plaintext" value="@Model.Department.DepartmentId" asp-for="Department.DepartmentId" /> </div> </div> <div class="row g-3 align-items-center"> <div class="col-auto"> <label for="SubDate" class="col-form-label">NGÀY ĐĂNG KÝ: </label> </div> <div class="col-auto"> <input type="date" id="SubDate" asp-for="DayGroup.SubcriptionDate" class="form-control" /> <span asp-validation-for="DayGroup.SubcriptionDate" class="text-dark"></span> </div> </div> <div class="mb-3 row"> <div class="col-sm-3"> <input type="text" readonly class="form-control-plaintext" value="DS HỌ TÊN" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 1" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 2" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 3" /> </div> </div> @{ int i = 0; foreach (Person person in Model.Department.Persons) { int j = 0; foreach (var group in person.GroupPerDay) { <div class="col-auto"> <input type="text" hidden readonly asp-for="Department.Persons[i].PersonId" value="@Model.Department.Persons[i].PersonId" /> <input type="text" hidden readonly asp-for="Department.Persons[i].Name" value="@Model.Department.Persons[i].Name" /> <input type="text" hidden readonly asp-for="Department.Persons[i].GroupPerDay[j].Id" value="@Model.Department.Persons[i].GroupPerDay[j].Id" /> </div> if (j == person.GroupPerDay.Count - 1) { <div class="row"> <div class="col"> <input type="text" readonly class="form-control-plaintext" asp-for="Department.Persons[i].GroupPerDay[j].Person.Name" value="@Model.Department.Persons[i].GroupPerDay[j].Person.Name" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[j].Set1" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[j].Set2" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[j].Set3" /> </div> </div> } else { <div class="col-auto"> <input type="hidden" asp-for="Department.Persons[i].GroupPerDay[j].Set1" /> <input type="hidden" asp-for="Department.Persons[i].GroupPerDay[j].Set2" /> <input type="hidden" asp-for="Department.Persons[i].GroupPerDay[j].Set3" /> <input type="hidden" asp-for="Department.Persons[i].GroupPerDay[j].Person.Name" /> </div> } j++; } i++; } } <div class="row g-3 align-items-center"> <div class="col-auto"> <button class="btn btn-primary" type="submit">Submit</button> </div> <div class="col-auto"> <a class="btn btn-danger" asp-controller="Home" asp-action="Index">Cancel</a> </div> </div> 如果您只想在发布操作中获取最后一个Persons[i].GroupPerDay项目,那么您应该尝试这个。 <form method="post" asp-action="Create" class="row g-3"> <div class="row g-3 align-items-center"> <div class="row-cols-auto"> <input type="text" hidden class="form-control-plaintext" value="@Model.Department.DepartmentId" asp-for="Department.DepartmentId" /> </div> </div> <div class="row g-3 align-items-center"> <div class="col-auto"> <label for="SubDate" class="col-form-label">NGÀY ĐĂNG KÝ: </label> </div> <div class="col-auto"> <input type="date" id="SubDate" asp-for="DayGroup.SubcriptionDate" class="form-control" /> <span asp-validation-for="DayGroup.SubcriptionDate" class="text-dark"></span> </div> </div> <div class="mb-3 row"> <div class="col-sm-3"> <input type="text" readonly class="form-control-plaintext" value="DS HỌ TÊN" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 1" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 2" /> </div> <div class="col"> <input type="text" readonly class="form-control-plaintext text-center" value="CA 3" /> </div> </div> @for (int i = 0; i < Model.Department.Persons.Count; i++) { int j = Model.Department.Persons[i].GroupPerDay.Count - 1; int firstIndex = 0; <div class="col-auto"> <input type="text" hidden readonly asp-for="Department.Persons[i].PersonId" value="@Model.Department.Persons[i].PersonId" /> <input type="text" hidden readonly asp-for="Department.Persons[i].Name" value="@Model.Department.Persons[i].Name" /> <input type="text" hidden readonly asp-for="Department.Persons[i].GroupPerDay[firstIndex].Id" value="@Model.Department.Persons[i].GroupPerDay[j].Id" /> </div> <div class="row"> <div class="col"> <input type="text" readonly class="form-control-plaintext" asp-for="Department.Persons[i].GroupPerDay[firstIndex].Person.Name" value="@Model.Department.Persons[i].GroupPerDay[j].Person.Name" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[firstIndex].Set1" value="@Model.Department.Persons[i].GroupPerDay[j].Set1" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[firstIndex].Set2" value="@Model.Department.Persons[i].GroupPerDay[j].Set2" /> </div> <div class="col"> <input type="number" class="form-control" asp-for="Department.Persons[i].GroupPerDay[firstIndex].Set3" value="@Model.Department.Persons[i].GroupPerDay[j].Set3" /> </div> </div> } <div class="row g-3 align-items-center"> <div class="col-auto"> <button class="btn btn-primary" type="submit">Submit</button> </div> <div class="col-auto"> <a class="btn btn-danger" asp-controller="Home" asp-action="Index">Cancel</a> </div> </div>

回答 1 投票 0

EF Core 在执行具有非唯一记录的存储过程时出现“已添加具有相同键的项目”错误

我在通过 EF Core 执行存储过程时遇到问题。存储过程返回不唯一的记录,我遇到以下错误: 具有相同密钥的项目有

回答 1 投票 0

如何在实体框架 6 失败的事务中记录数据库中的错误

如果我正在事务中进行大量更新,并且它抛出异常,我仍然想在同一数据库上下文中的表中记录一些信息,以便我知道发生了什么。我

回答 1 投票 0

C# - 具有 2 个项目的解决方案迁移失败(DBContext setr 仅在一个项目中)

错误信息: 在程序集“API_Test_Console”中找不到 DbContext。确保您使用正确的程序集并且类型既不是抽象的也不是泛型的。 如果您看一下项目

回答 1 投票 0

如何在 EF Core 中配置固定长度列?

在之前的EF中,我可以这样做: 实体类型生成器 .Property(b => b.Foo) 。是必须的() .HasMaxLength(10) .IsFixedLength(); 这会产生一些迁移......

回答 5 投票 0

添加属性以在 Entity Framework Core 中配置小数精度

我的 EF 6 .Net Framework 应用程序具有以下属性: [AttributeUsage(AttributeTargets.Property)] 公共密封类 DecimalPrecisionAttribute :属性 { ...

回答 2 投票 0

将 Entity Framework 6 与多个数据库模式结合使用,但使用一个 DBContext

我有一个使用 EF 作为 ORM 的应用程序。数据库过去只有一种模式 dbo,一切都工作正常。我最近将表组织成 4 种不同的模式。一种模式的一些表...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.