实体框架有时会生成可怕的导航属性名称.使用数据库第一种方法,解决这个问题的最佳方法是什么?
我可以根据自己的喜好编辑t4模板,但是如何将这些修改后的名称绑定到实际关系?我应该编写一个脚本来修改edmx文件吗?显然,手工制作并不是一种选择.
现在我在我的解决方案中首先使用EF 6数据库,我有在数据库中预定义的实体.我现在需要更新数据库并添加表格!
我找不到真正的跟随方式
我首先使用数据库,我有一个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.
我确保每个上下文都使用正确的连接字符串,但仍会出现此错误:
我正在尝试在已创建数据库的现有系统上构建一个 aspnetcore 应用程序,我将在其上添加一些表。
我对数据库进行了逆向工程,将现有表作为实体添加到我的应用程序中,并且我编写了自己的实体,稍后将添加这些实体。最后,所有实体都添加到单个 DbContext 中。
我的要求如下:
注意:我不想接触生成的迁移代码。
有没有合适的方法来处理这种情况?
entity-framework ef-database-first entity-framework-migrations ef-core-2.2
关于Fluent API有许多教程,但它们都使用Entity Framework Code-First代码示例来解释它.由于我不了解Code-First,您知道任何使用EF Database-First方法解释主题的Fluent API教程吗?
谢谢
我有一些有趣的问题需要解决,但是虽然很常见,但实际上看起来它并不容易实现.有两个表:
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) 无论如何,当从设置了字段默认值或绑定的数据库生成时,是否有StoreGeneratedPattern自动设置为ComputedADO.net 的属性?
对于具有触发器的字段,这也可能吗?
我正在尝试使用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
我在使用继承(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) 如何直接从 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
c# ×3
.net ×1
ado.net ×1
asp.net-core ×1
ef-core-2.2 ×1
entity-framework-migrations ×1
fluent ×1
msbuild ×1
sql-server ×1
t4 ×1
wpf ×1