标签: ef-model-first

EF 5 Model First Partial Class Custom Constructor如何?

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)

constructor entity-framework partial-classes ef-model-first

10
推荐指数
2
解决办法
3805
查看次数

实体框架问题 - 在我的表名中附加"1"?

我有以下模型 - 首先(它是什么叫它?)我做的图.我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)

c# entity-framework ef-model-first

9
推荐指数
1
解决办法
4565
查看次数

The entity type <class> is not part of the model for the current context

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 …

entity entity-framework entity-framework-4.1 ef-model-first

8
推荐指数
1
解决办法
8752
查看次数

如何使用EF Model First数据库架构升级来避免数据丢失?

这是一个很长的问题,但如果我能就此得到一些好的建议,我将非常感激.简而言之,我正在寻找一种用于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升级转换到另一种技术.

升级方法直到现在

  1. 我在设计器中添加了新实体(表),关联(关系)和属性(列).
  2. 我右键单击,选择"从模型中生成数据库...",这将生成一个.sql脚本,它删除旧的数据库对象并创建新的数据库对象.
  3. 我创建一个空数据库并运行脚本来创建表/键等.
  4. 在SQL Server Management Studio中,我右键单击数据库并选择"任务 - >提取数据层应用程序...".当向导完成时,我得到了我需要的dacpac(实际上我现在可以删除数据库,因为我只创建了它才能获得dacpac文件,因为我不认为我可以在Visual Studio数据模型设计器中生成它) .
  5. 我右键单击Azure SQL数据库并选择"任务 - >升级数据层应用程序..."并按照向导进行操作.到现在为止,我从来没有数据丢失,所以这个工作正常!

现在的情况

这是一个简单的例子来说明这个问题,但是从现在开始我似乎会经常进入几乎相同的情况.查看下图中的旧版和新版架构.假设数据库中已有数据.我需要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

8
推荐指数
1
解决办法
1590
查看次数

禁用Database-First工作流上的默认构造函数

如何防止使用生成的DbContext的无参数构造函数?

var dcx = new DataEntities();
Run Code Online (Sandbox Code Playgroud)

默认构造函数由T4模板生成,因此我无法在分部类中覆盖它.我宁愿它不编译,但运行时错误也会很好.

entity-framework entity-framework-5 ef-model-first

8
推荐指数
1
解决办法
1426
查看次数

更改关系的默认名称

我有两个表格结构如下:

*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_idUser表中的外键.我在Mssql图中为关系设置了一个关系名称,但是当我从这个数据库创建我的模型时,关系是:UserUser1.当我手动更改它们时,它会变好,但在刷新模型或重新创建Ticket表后,UserUser1回来了.如何在EF模型中为我的关系设置最终名称?即使我刷新或删除整个模型,我希望EF模型关系名称与图表关系名称相同.

sql-server entity-framework foreign-key-relationship ef-model-first

8
推荐指数
1
解决办法
443
查看次数

在EF Model First设计中添加索引

我喜欢使用Entity Framework(4)进行模型优化设计的选项.但是,除了主键之外,我还无法找到如何向表中添加其他索引.

这在视觉设计师中是否可行?或者您是否需要在创建数据库后手动添加索引(这将是设计人员的缺点)?

.net entity-framework ef-model-first

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

在模型设计器中使用强空间类型选项锁定?

我正在以模型第一种方法开发模型第一个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

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

如何针对MDF文件运行SQL脚本?

我使用Entity Framework 4.0创建了一个使用模型优先方法的数据库模型.然后我使用模型生成数据库创建了一个sql脚本...我还在App_Data文件夹中创建了一个SQL Server数据库文件.我现在如何针对此MDF文件运行SQL文件?

我正在使用Visual Studio 2010.

.net mdf sql-scripts entity-framework-4 ef-model-first

6
推荐指数
2
解决办法
6398
查看次数

实体框架模型第一个时间戳

我正在开发基于实体框架的应用程序.我正在使用模型优先方法.我想处理并发问题.正如许多文章所述,我将通过将ConcurrencyMode转换为固定在一个时间戳的字段上来实现.目前我遇到了问题 - 我无法添加timestamp类型的字段(列).我怎么能在模特中做到这一点?

正如这里所写:

http://social.msdn.microsoft.com/Forums/is/adodotnetentityframework/thread/1ed8d1e4-9d78-4593-9b10-33e033837af8 \

我尝试安装Entity Designer数据库生成Power Pack,但我仍然认为没有可能从模型生成时间戳(我甚至尝试在edmx文件中手动设置它,但我仍然没有在生成的数据库中接收时间戳fcolumn).

请帮忙.

.net timestamp entity-framework ef-model-first

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