标签: ef-model-first

如何在保存时自动更新Entity Framework 4中实体的Modified属性?

我在VS2010,POCO和模型优先方法中使用EF4.

我的实体具有以下属性:Id:Guid,Name:String,Created:DateTime,Modified:DateTime,Revision:Int32.

我创建我的实体,设置名称并使用EF4上下文将其保存到数据库.这应该将Id设置为新的Guid(与Identity-SGP一起使用),Created设置为now,Modified left as null,Revision设置为0.我检索实体,更改名称并再次保存.这次Modified-value应设置为now,revision应为1.

如何使用EF4与EDMX设计师最好地完成此操作?

更新:

这是我最终使用的:

public override int SaveChanges(System.Data.Objects.SaveOptions options)
{
    foreach (ObjectStateEntry entry in ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified).Where(e => e.Entity is EntityBase))
    {
        EntityBase entity = entry.Entity as EntityBase;
        if (entry.State == EntityState.Added)
        {
            entity.Version = new Version() { Major = 1, Minor = 0, Revision = 0 };
            entity.Created = DateTime.Now;
            if (OperationContext.Current != null) entity.CreatedBy = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
        }
        else if (entry.State == EntityState.Modified)
        {
            entity.Version.Revision++;
            entity.Modified = DateTime.Now;
            if (OperationContext.Current != null) entity.ModifiedBy = …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-4 ef-model-first

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

实体框架:模型优先,继承?

我有一个Person表,一个Employee表和一个Contractor表.所有员工都是人,所有承包商都是人,每个人都是雇员或承包商.像这样:替代文字

我怎样才能使用Model First完成这个概念?遗产?

.net inheritance entity-framework ef-model-first

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

EntitySet System.InvalidOperationException - "实体类型不是当前上下文模型的一部分"

类似的问题

实体类型<classname>不是当前上下文的模型的一部分 - 并且 - EF 4.1 Code First错误 - 实体类型SomeType不是当前上下文的模型的一部分是类似的问题但它们是"代码优先"透视只有更简单的数据模型,并解决连接字符串和映射问题.请仔细看看这个.

症状

// HomeController.cs
public ActionResult Index()
{
    var _db = new MealsContext();

    var m = _db.Meals.ToList();
    var d = _db.Drinks.ToList();

    return View();
}
Run Code Online (Sandbox Code Playgroud)

抛出异常会检索Drinks集合:

The entity type Drink is not part of the model for the current context.
Run Code Online (Sandbox Code Playgroud)

// Meal.cs
public class Meal
{
    public int Id { get; set; }
    public string Stuff { get; set; }
    public virtual ICollection<Meat> Meats { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework csdl dbcontext ef-model-first

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

EF从模型生成数据库时复数表的名称

我在EF中有一些模型和表格,你可以在这里看到其中一个:

期权模型

现在,当我想从模型生成数据库时,它将's'添加到生成的sql中的表名:

CREATE TABLE [dbo].[Options] (
[Id] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(50)  NOT NULL,
[Price] int  NOT NULL
); 
Run Code Online (Sandbox Code Playgroud)

我也禁用了多个名称,但没有改变:

在此输入图像描述

这会导致部署Web应用程序时出错.我怎样才能防止多元化?

sql entity-framework visual-studio-2010 pluralize ef-model-first

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

我可以使用什么而不是包含?

有没有替代使用Include热切载入实体?

我无法使用的原因Include是它似乎区分大小写.
请考虑以下示例:
我有两个表:

在此输入图像描述

在此输入图像描述

注意案例的区别.

当我想急于负载SagerStamkartotek我用Include,但Include不加载Stamkartotek:

在此输入图像描述

**更新1**

我注意到这种奇怪的行为 - 如果我使用Stamkartotek它的任何字段加入正确: 在此输入图像描述

但是,如果我去,只检索Stam_nr而不是整个对象的值- 它给了我A而不是a:

在此输入图像描述

迄今为止的研究:

  • EF团队知道这个问题 - 但决定不解决它.
  • 这个人只有使用代码优先才有同样的问题 - 没有找到解决方案

更新2
SQL生成Include:

FROM  [dbo].[Sager] AS [Extent1]
INNER JOIN [dbo].[Stamkartotek] AS [Extent2] ON [Extent1].[Klient_Stam_nr] = [Extent2].[Stam_nr]
WHERE 'jek15' = [Extent1].[Sags_nr]
Run Code Online (Sandbox Code Playgroud)

更新3
在单独的查询中加载它们,并让changetracker修复引用.它似乎也不起作用:
在此输入图像描述

linq sql-server c#-4.0 entity-framework-4.1 ef-model-first

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

允许空外键GUID

我想创建一个类型为空的外键GUID这样的

[ForeignKey("CreatedBy")]
[Display(Name = "Created by")]
public Guid? CreatedById { get; set; }

public virtual User CreatedBy { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是当我添加迁移并更新数据库时,它不会使它在SQL中的表设计中允许为null.

还有另一种方法可以让它首先通过模型允许null吗?

c# asp.net-mvc entity-framework guid ef-model-first

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

如何使用实体框架5模型首先生成每个层次结构的表

我首先使用Visual Studio 2012与实体框架5模型.我想使用每个层次结构策略的表生成我的数据库,但找不到该选项.实体设计器数据库生成Power Pack不适用于visual studio 2012,或者我找不到它.

有人建议吗?

table-per-hierarchy entity-framework-5 ef-model-first

5
推荐指数
1
解决办法
688
查看次数

将自定义t4模板添加到DDL生成模板下拉列表

我知道我可以在文件夹中添加模板

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen

使其在DDL生成模板下拉列表中可见,但随后我需要将模板分发给我的团队成员,以便他们可以将模板添加到同一文件夹中.

我希望通过以某种方式将模板添加到VS 2012解决方案并使其在同一下拉列表中可见,我可以获得相同的结果

你知道实现这个目标的方法吗?我正在使用VS 2012并生成数据库,我使用的是Model First方法

t4 entity-framework-5 ef-model-first

5
推荐指数
1
解决办法
1494
查看次数

实体框架更新模型首先使用模型时不会丢失数据

我在这里已经看到了很多这个问题,但是所有解决方案都涉及使用EF代码优先.我使用模型优先使用设计器来布局我的实体及其关系.我想更新我的生产服务器的方案而不会丢失数据.

因为我是新手,所以我不知道实现这一目标的最佳解决方案是什么.我可以手动编写SQL代码来在我的生产方案中创建新表,而不是使用database-first导入.edmx到Visual Studio中吗?这个解决方案有用吗?

或者我可以生成我的代码优先表示,.edmx然后使用该迁移过程?

请分享一些知识.

感谢大家

entity-framework database-migration code-first ef-model-first

5
推荐指数
0
解决办法
863
查看次数

实体框架核心 - 外键 1(额外外键列)

我刚刚升级到 Entity Framework Core 2,现在我遇到了一个额外的列存在问题并且有一个唯一的键,即使它不在我的模型中并且没有在其他任何地方定义。

指数:

migrationBuilder.CreateTable(
    name: "Vouchers",
    columns: table => new
    {
        Id = table.Column<int>(nullable: false)
            .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
        Code = table.Column<Guid>(nullable: false),
        IsClaimed = table.Column<bool>(nullable: false),
        LastModified = table.Column<DateTime>(nullable: false),
        NumberOfUnits = table.Column<int>(nullable: false),
        TransactionId = table.Column<int>(nullable: false),
        TransactionId1 = table.Column<int>(nullable: true) // why is this here?
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_Vouchers", x => x.Id);
        table.ForeignKey(
            name: "FK_Vouchers_Transactions_TransactionId1",
            column: x => x.TransactionId1,
            principalTable: "Transactions",
            principalColumn: "Id",
            onDelete: ReferentialAction.Restrict);
    });
Run Code Online (Sandbox Code Playgroud)

TransactionId1 不在模型中:

public class Voucher : IAutoLastModified
{ …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-model-first

5
推荐指数
2
解决办法
3325
查看次数