EF已经为我生成了一些部分类,每个都有一个构造函数,但它表示不要触摸它们(下面的示例),现在如果我创建自己的辅助部分类并且我想要一个构造函数自动设置一些字段如何我会这样做,因为它会发生冲突吗?
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Breakdown.Models
{
using System;
using System.Collections.Generic;
public partial class Call
{
public Call()
{
this.Logs = new HashSet<Log>();
}
...
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下模型 - 首先(它是什么叫它?)我做的图.我T4用来生成类.

现在,我遇到一个问题,导致实体框架以某种方式将"1"附加到DatabaseSupporter实体的表名.数据库是从这个模型生成的,没有任何修改过.
我正在尝试执行以下行:
_entities.DatabaseSupporters.SingleOrDefault(s => s.Id == myId);
Run Code Online (Sandbox Code Playgroud)
我执行该行时遇到的错误(以及下面的内部异常)是:
mscorlib.dll中出现"System.Data.Entity.Core.EntityCommandExecutionException"类型的异常,但未在用户代码中处理.
无效的对象名称'dbo.DatabaseSupporter1'.
我尝试使用以下Fluent API代码解决问题(请注意函数中将表明确命名为"DatabaseSupporter"的第二行),但没有运气.
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder
.Entity<DatabaseSupporter>()
.HasOptional(f => f.DatabaseChatSession)
.WithOptionalPrincipal(s => s.DatabaseSupporter);
modelBuilder
.Entity<DatabaseSupporter>()
.Map(m =>
{
m.Property(s => s.Id)
.HasColumnName("Id");
m.ToTable("DatabaseSupporter");
});
modelBuilder
.Entity<DatabaseSupporter>()
.HasMany(s => s.DatabaseGroups)
.WithMany(g => g.DatabaseSupporters)
.Map(m =>
{
m.ToTable("DatabaseSupporterDatabaseGroup");
m.MapLeftKey("DatabaseGroups_Id");
m.MapRightKey("DatabaseSupporters_Id");
});
modelBuilder
.Entity<DatabaseGroup>()
.HasRequired(g => g.DatabaseChatProgram)
.WithMany(c => c.DatabaseGroups);
modelBuilder
.Entity<DatabaseGroup>()
.HasRequired(g => g.DatabaseOwner)
.WithMany(o => o.DatabaseGroups);
modelBuilder
.Entity<DatabaseOwner>()
.HasMany(o => o.DatabaseChatSessions) …Run Code Online (Sandbox Code Playgroud) This is a MODEL first approach. I have already researched this extensiely and have not come up with an answer. I have tried all the suggestions at the following links:
This appears to be the same problem but with no resolution The entity type <classname> is not part of the model for the current context
These are the links I have already researched so please don't answer as duplicate of ---- EF 4.1 Code First error - The entity type …
这是一个很长的问题,但如果我能就此得到一些好的建议,我将非常感激.简而言之,我正在寻找一种用于MS SQL数据库模式的版本升级的好方法,该方法还要求将数据从已删除的表移动到新表中.
我认为Stack Overflow是这个问题最合适的地方(不是dba.stackexchange.com),因为在它的核心,对于使用Entity Framework的.NET开发人员来说这是一个问题,而这个数据库部分主要由自动生成的sql组成.脚本.
.NET应用程序和SQL数据库在Azure中运行(工作者角色中的应用程序和Azure SQL中的数据库).到目前为止,版本升级工作正常,因为所有数据库架构更改都很简单(如添加新列).但是,从现在开始,我还需要处理在升级期间将数据从一个表移动到另一个表.(我能够通过创建一个新数据库来临时修复此问题,使用旧数据库中的数据生成脚本并手动编辑脚本以使其适合新模式,但我希望有更好的方法).
我使用Entity Framework,我使用Model First.实体和关联在Visual Studio数据模型设计器中定义,这种方法非常适合我的应用程序.
我使用dacpac来升级Azure SQL数据库,这种方法一直运行到现在(但现在我将丢失数据,所以现在我必须找到一种方法将数据移动到新表).
我希望我可以继续使用实体框架并在设计器中定义实体/关联,但如果需要,可以从dacpac升级转换到另一种技术.
这是一个简单的例子来说明这个问题,但是从现在开始我似乎会经常进入几乎相同的情况.查看下图中的旧版和新版架构.假设数据库中已有数据.我需要ImageFile中的数据最终在ImageFileOriginal或ImageFileProcessed中,具体取决于IsOriginal布尔/位值.使用"升级数据层应用程序"我将收到有关数据丢失的警报.你会建议采用什么方法来解决这个问题?正如我之前所说,如果需要,可以将dacpac升级转换为其他技术.

我已经阅读了有关Visual Studio数据库项目,Fluent Migrator,Red Gate和实体设计器数据库生成Power Pack(它不支持Visual Studio 2012),但我没有找到一个好办法.我承认我没有花一整天时间深入研究每种技术,但我当然花了一些时间尝试找到一种好的方法.
entity-framework database-migration ef-model-first dacpac azure-sql-database
如何防止使用生成的DbContext的无参数构造函数?
var dcx = new DataEntities();
Run Code Online (Sandbox Code Playgroud)
默认构造函数由T4模板生成,因此我无法在分部类中覆盖它.我宁愿它不编译,但运行时错误也会很好.
我有两个表格结构如下:
*Table User*
id int identity
username varchar
role varchar
*Table Ticket*
id int identity
admin_id int
user_id int
Run Code Online (Sandbox Code Playgroud)
admin_id并且user_id是User表中的外键.我在Mssql图中为关系设置了一个关系名称,但是当我从这个数据库创建我的模型时,关系是:User和User1.当我手动更改它们时,它会变好,但在刷新模型或重新创建Ticket表后,User又User1回来了.如何在EF模型中为我的关系设置最终名称?即使我刷新或删除整个模型,我希望EF模型关系名称与图表关系名称相同.
sql-server entity-framework foreign-key-relationship ef-model-first
我喜欢使用Entity Framework(4)进行模型优化设计的选项.但是,除了主键之外,我还无法找到如何向表中添加其他索引.
这在视觉设计师中是否可行?或者您是否需要在创建数据库后手动添加索引(这将是设计人员的缺点)?
我正在以模型第一种方法开发模型第一个EF6模型.
EF暴露的不仅仅是DBGeometry和DBGeography,还允许我在设计模型时选择特定的子类型(如GeographyPoint).
但是,即使我选择了更具体的子类型,我生成的类仍然只是DBGeography.
我注意到模型上的一个名为"使用强空间类型"的属性,但默认设置为false并且似乎已锁定(灰色,没有下拉列表,无法键入).这似乎意味着支持生成更强大的类型化的类(例如,在生成的类中将使用GeographyPoint而不是DBGeography)
知道是什么原因引起的吗?这听起来像一个有用的功能.
我的目标是SQL Server Express 2012,如果这是一个问题,我可以切换到另一个版本,因为我没有做任何特定的版本.
更新:如果你不确定你理解我所指的是什么,请参见图片链接!
https://www.dropbox.com/s/lzgsoi60whuicy0/EF%20Spacial%20Strong.png?dl=0

sql-server entity-framework .net-4.5 ef-model-first entity-framework-6
我使用Entity Framework 4.0创建了一个使用模型优先方法的数据库模型.然后我使用模型生成数据库创建了一个sql脚本...我还在App_Data文件夹中创建了一个SQL Server数据库文件.我现在如何针对此MDF文件运行SQL文件?
我正在使用Visual Studio 2010.
我正在开发基于实体框架的应用程序.我正在使用模型优先方法.我想处理并发问题.正如许多文章所述,我将通过将ConcurrencyMode转换为固定在一个时间戳的字段上来实现.目前我遇到了问题 - 我无法添加timestamp类型的字段(列).我怎么能在模特中做到这一点?
正如这里所写:
我尝试安装Entity Designer数据库生成Power Pack,但我仍然认为没有可能从模型生成时间戳(我甚至尝试在edmx文件中手动设置它,但我仍然没有在生成的数据库中接收时间戳fcolumn).
请帮忙.
ef-model-first ×10
.net ×3
sql-server ×2
.net-4.5 ×1
c# ×1
constructor ×1
dacpac ×1
entity ×1
mdf ×1
sql-scripts ×1
timestamp ×1