标签: ef-database-first

重命名导航属性

实体框架有时会生成可怕的导航属性名称.使用数据库第一种方法,解决这个问题的最佳方法是什么?

我可以根据自己的喜好编辑t4模板,但是如何将这些修改后的名称绑定到实际关系?我应该编写一个脚本来修改edmx文件吗?显然,手工制作并不是一种选择.

navigation-properties ef-database-first entity-framework-5

7
推荐指数
1
解决办法
3515
查看次数

使用数据库第一种方法EF将新表添加到现有数据库

现在我在我的解决方案中首先使用EF 6数据库,我有在数据库中预定义的实体.我现在需要更新数据库并添加表格!

我找不到真正的跟随方式

c# wpf entity-framework ef-database-first

7
推荐指数
1
解决办法
4213
查看次数

"实体类型不是当前上下文模型的一部分"当项目包含多个EDMX文件时,将引发错误

我首先使用数据库,我有一个switch看起来像这样的语句:

switch (site)
{
    case Site.One:
        using (OneContext one = new OneContext())
            return one.OrganizationObjects.SingleOrDefault(x => x.u_Name == orgName)?.g_org_id;
    case Site.Two:
        using (TwoContext two = new TwoContext())
            return two.OrganizationObjects.SingleOrDefault(x => x.u_Name == orgName)?.g_org_id;
    default:
        throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

两个数据库非常相似,几乎都有相同的模型.

如果我删除"两个"EDMX文件并注释掉条件,那么OneContext可以正常工作.
如果我将TwoContext EDMX文件添加到项目并再次运行代码,则"OneContext"代码在尝试查询时失败OrganizationObjects.

我确保每个上下文都使用正确的连接字符串,但仍会出现此错误:

在此输入图像描述

c# entity-framework ef-database-first

7
推荐指数
1
解决办法
1014
查看次数

Entity Framework Core 2.2:禁用特定实体的迁移

我正在尝试在已创建数据库的现有系统上构建一个 aspnetcore 应用程序,我将在其上添加一些表。

我对数据库进行了逆向工程,将现有表作为实体添加到我的应用程序中,并且我编写了自己的实体,稍后将添加这些实体。最后,所有实体都添加到单个 DbContext 中。

我的要求如下:

  • 我想为新添加的实体启用代码优先迁移
  • 我不希望对已经存在的表/实体进行迁移

注意:我不想接触生成的迁移代码。

有没有合适的方法来处理这种情况?

entity-framework ef-database-first entity-framework-migrations ef-core-2.2

7
推荐指数
2
解决办法
2780
查看次数

任何使用EF Database-First方法解释主题的Fluent API教程?

关于Fluent API有许多教程,但它们都使用Entity Framework Code-First代码示例来解释它.由于我不了解Code-First,您知道任何使用EF Database-First方法解释主题的Fluent API教程吗?

谢谢

entity-framework fluent ef-database-first

6
推荐指数
1
解决办法
5652
查看次数

实体框架 - 实体只读属性映射到相关表的列

我有一些有趣的问题需要解决,但是虽然很常见,但实际上看起来它并不容易实现.有两个表:

Player(Id,TeamId,FirstName,LastName)
Team(Id, Name, IsProfessional)
Run Code Online (Sandbox Code Playgroud)

玩家只能属于一个团队.使用TPT(DB first),我们有两个映射到这些表的类:

public class Player
{
   public int Id{get;set;}
   public int TeamId{get;set;}
   public string FirstName{get; set;}
   public string LastName{get; set;}
   public Team Team{get;set;}
}

public class Team
{ 
   public int Id{get; set;}
   public string Name{get;set;}
   public bool IsProfessional{get;set;}
   public IEnumerable<Player> Players{get;}
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的是Player实体上的属性IsProfessional:

public class Player
    {
       public int Id{get;set;}
       public int TeamId{get;set;}
       public string FirstName{get; set;}
       public string LastName{get; set;}
       public Team Team{get;set;}
       **public bool IsProfessional{get;}** should be read-only
    }
Run Code Online (Sandbox Code Playgroud)

是否可以配置映射,以便在linq查询中使用IsProfessional属性?

var result= db.Players.Where(p=>p.IsProfessional==true); …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4 ef-database-first

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

从数据库生成时自动将存储生成的模式设置为计算

无论如何,当从设置了字段默认值或绑定的数据库生成时,是否有StoreGeneratedPattern自动设置为ComputedADO.net 的属性?

对于具有触发器的字段,这也可能吗?

.net sql-server ado.net entity-framework ef-database-first

6
推荐指数
0
解决办法
211
查看次数

实体框架的T4代码生成器 - 无法解析EF.Utility.CS.ttinclude的包含文本

我正在尝试使用OpenRIA Services自动化Silverlight 5应用程序的CI服务器的构建过程.

我有数据库优先的Entity Framework .edmx生成的文件,从中生成DomainModel,作为构建的一部分,我想通过T4代码生成器生成实体.

项目设置

我的服务器.csproj改变了

进口

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
# Microsoft.TextTemplating.targets are added after CSharp.targets
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\TextTemplating\Microsoft.TextTemplating.targets"/>
Run Code Online (Sandbox Code Playgroud)

和属性

<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
    ...
<PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

已安装的sdk和工具:

破碎的构建

看起来不错,但在构建时出现了这样的错误

5>  Transforming template DomainModel\EntityConverters.tt...
5>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TextTemplating\Microsoft.TextTemplating.targets(396,5): error : Failed to resolve include text for file:C:\{path to my project}\DomainModel\EF.Utility.CS.ttinclude. Line=-1, Column=-1
5>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TextTemplating\Microsoft.TextTemplating.targets(396,5): error : Loading the …
Run Code Online (Sandbox Code Playgroud)

msbuild t4 entity-framework wcf-ria-services ef-database-first

6
推荐指数
1
解决办法
6055
查看次数

子实体的继承和导航属性

我在使用继承(TPH - 目前在 EF Core 中唯一可用)时遇到导航属性问题。

我的层次结构模型:

public class Proposal
{
    [Key]
    public int ProposalId { get; set; }

    [Required, Column(TypeName = "text")]
    public string Substantiation { get; set; }

    [Required]
    public int CreatorId { get; set; }

    [ForeignKey("CreatorId")]
    public Employee Creator { get; set; }

}

public class ProposalLeave : Proposal
{
    [Required]
    public DateTime LeaveStart { get; set; }

    [Required]
    public DateTime LeaveEnd { get; set; }
}

public class ProposalCustom : Proposal
{
    [Required, StringLength(255)]
    public string …
Run Code Online (Sandbox Code Playgroud)

c# ef-database-first entity-framework-core asp.net-core

6
推荐指数
1
解决办法
2754
查看次数

数据库项目中的 Scaffold EF Core

如何直接从 Visual Studio SQL Server 数据库项目构建 EF Core?

优选以下解决方案:

scaffold-dbcontext -connection "provider=ssdtproject, name=myprojectname.sqlproj"
scaffold-dbcontext -ddl "ssdtprojectoutput.sql"
scaffold-dbcontext -ssdtschema "ssdtproject.dacpac"
maintained-third-party-tool myprojectname.sqlproj -EfModelGenerationParameters
Run Code Online (Sandbox Code Playgroud)

这就是整个问题。以下是我更详细的情况,以便您能够提供替代解决方案:

尽管 MS 承认 EF Core 尚未做好生产准备,但距 EF 6 进展停止已有 3-4 年了,EF Core 是唯一具有 NETCore 兼容性的 LINQ 代码类似路径。标题为“所以您将使用 EF Core ”的传奇由此开始。

这部分内容固执己见,但对我来说(基于 25 年以上的企业软件设计和开发经验)Code-First 绝对是行不通的。对于小型的一周应用程序概念来说,这很好,但我认为没有合理的模式/流程/实践来集成约束、视图等。如果没有设计视图,真正的业务应用程序最终会导致开发人员在 LINQ 表达式中重复逻辑基础知识到处都是,用静态字段乱扔代码来支持 LINQ-to-SQL 查询,使用 LinqKit 混淆微组合模式,等等。如果没有约束,我们最终会得到十倍于处理运行时错误的防御性代码要求,快速发展的单元集成测试和演示失败成为常态。要么我们的面向对象专家需要成为 SQL 专家,要么相反,我们大大增加了寻找和适当补偿工程师的难度。所有这些问题都是我在四年前与 Rowan Miller(他最近离开 EF 团队,这对于短期解决方案来说不是一个好兆头)的一次详细对话中指出的。

模型优先(.edmx早期 EF 版本中的视觉设计器)显然是不可能的,因为 MS 对此的解决方案是声称代码优先实际上就是模型优先,并且不再理会它。因此,为清楚起见,我们将其称为“合同优先”的真正中立的方法在 EF Core 中并不存在。

所以,这个咆哮(抱歉,沮丧)让我想到了数据库优先,因此Scaffold-DbContext. 我们的数据库架构目前是一个版本控制的 Visual Studio SQL Server 数据库项目。除了一些已知的问题 …

entity-framework ef-database-first entity-framework-core sql-server-data-project

6
推荐指数
1
解决办法
1822
查看次数