gpt4 book ai didi

asp.net - Entity Framework 4(使用EDMX),如何将字段添加到数据库实际上没有该字段的模型中

转载 作者:行者123 更新时间:2023-12-02 06:57:24 25 4
gpt4 key购买 nike

我需要在模型中添加一个字段,而数据库实际上没有该字段。

因为,首先我尝试仅将字段添加到实体类中。

public partial class Weborder
{
(Auto Generated)
public int orderno {get; set;}
.
.
.
(Add Manually)
public string newField1 {get; set;} //this is new field that DB does not have
public string newField2 {get; set;} //this is new field that DB does not have
}

及以后,当我更新 EDXM 时,EDMX 会删除新字段,因为数据库没有该字段。 :(

所以我手动将该字段添加到 EDMX 模型中。 (添加 -> 标量属性)

然后编译时出现错误,错误消息为:

Error   1   Error 3004: Problem in mapping fragments starting at line 399:No mapping specified for properties ...
An Entity with Key (PK) will not round-trip when:...

有人知道如何向实体类添加新字段吗?

谢谢!

编辑目的:如果您的模型是数据库的表示,并且在数据库中没有该字段,为什么要手动添加它?

=>

检索数据时,对象的返回类型为实体类。

在将数据从 Controller 传递到 View 之前,我需要将更多数据(字段)添加到 IQueryable 结果中。

例如)

public DbSet<WEBORDERLN> WEBORDERLNs { get; set; }

//repository
public IQueryable<WEBORDERLN> WebOrderLns
{
get { return context.WEBORDERLNs; }
}

现在我在 Controller 中获取了 weborderln 数据。在传递 View 之前,我需要

在结果中添加额外的数据。

var data = webOrderLnRepository.WebOrderLns.Where(e => e.PICKNO == OrderNo).ToList();

foreach (WEBORDERLN weborderln in data)
{
weborderln.[NEW FIELD] = "EXTRA DATA"; //// FOR THIS, I NEED TO ADD NEW FILED INTO ENTITY CLASS
}

//return data

我希望它能解释这个问题:)

再次感谢。

最佳答案

您必须创建实体类的新部分(在新的 .cs 文件中)并向该类添加新字段。您不得修改自动生成创建的部分部分,因为每次更改 EDMX 文件时自动生成的文件都会被覆盖。您也不得在 EDMX 中包含该字段,因为 EDMX 定义了到数据库的映射 = 它仅包含数据库中的字段。

在与自动生成的类相同的程序集和命名空间中创建一个新文件 WebOrderPart.cs,其中包含:

public partial class Weborder
{
public string newField1 {get; set;}
public string newField2 {get; set;}
}

关于asp.net - Entity Framework 4(使用EDMX),如何将字段添加到数据库实际上没有该字段的模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com