将虚拟列添加到实体框架中的表

本文关键字:框架 实体 虚拟 添加 | 更新日期: 2023-09-27 17:56:27

我有下面的dbcontext.cs和相应的表.cs它们使用实体框架在我的MVC中定义了DAL。

我的数据库中的列表表没有 C 列,但我希望实体从数据库中获取 ID、A、B 值并从代码中获取 C。如果是这样,这可能是什么最好的方法。

下面的代码失败,给出异常"无效的列 C"。

我可以考虑的另一种方法是声明另一个实体 ex:ListEntity2 并在从 ListEnity 查询后添加值,我想这是一个很好的方法,但只是想知道任何其他可能性。

表.cs:

 [Table("List")]
    public class ListEntity
    {
        [Key]
        public int ID { get; set; }
        public string A { get; set; }
        public int B { get; set; }
        private string name;
        public virtual string C
        {
            get 
            {
                return name;
            }
            set
            {
               name=value ;
            }
        }
    }

dbcontext.cs:

public DbSet<ListEntity> List { get; set; }

将虚拟列添加到实体框架中的表

您可以尝试使用 NotMapped 属性(文档)

[...]表示应从数据库映射中排除属性或类。

例如:

using System.ComponentModel.DataAnnotations.Schema;
[Table("List")]
public class ListEntity
{
    [Key]
    public int ID { get; set; }
    public string A { get; set; }
    public int B { get; set; }
    private string name;
    [NotMapped]
    public string C
    {
        get { return name; }
        set { name = value; }
    }
}