Entity framework 向实体框架5代码优先POCO模型添加无状态属性

Entity framework 向实体框架5代码优先POCO模型添加无状态属性,entity-framework,Entity Framework,我有一个包含JSON字符串的模型,并希望在旅途中保留解析后的JSON.NET对象,以防止不必要的重新分析 比如说 public class JsonData { public Guid Id { get; set; } public string Json { get; set; } } 我想在其中保留一个JObject,如果可能的话,在Json字符串的集合中重新解析它。我不想把它存储在数据库里。不过,当我写这篇文章时,感觉不对 携带相同“数据”(视图?)的对象的好方法是什么,只是在模

我有一个包含JSON字符串的模型,并希望在旅途中保留解析后的JSON.NET对象,以防止不必要的重新分析

比如说

public class JsonData {
  public Guid Id { get; set; }
  public string Json { get; set; }
}
我想在其中保留一个JObject,如果可能的话,在Json字符串的集合中重新解析它。我不想把它存储在数据库里。不过,当我写这篇文章时,感觉不对


携带相同“数据”(视图?)的对象的好方法是什么,只是在模型上序列化?

我不确定这是什么意思,但您可以将
[NotMapped]
注释添加到POCO上的属性中,您只想在代码中使用,而不想存储在数据库中

公共类MyPoco{
公共Guid Id{get;set;}
公共字符串MyName{get;set;}
[未映射]
公共字符串ThisObjectCachedAsJson{get;set;}
}
这是一个更完整的Json缓存需求示例,与POCO不同

public class MyPoco {

    private Guid _id;
    private string _myName;
    private string _jsonCache;

    public Guid Id { 
        get { return _id; } 
        set { _jsonCache = null; _id = value; }
    }

    public string MyName { 
        get { return _myName; } 
        set { _jsonCache = null; _myName = value; }
    }

    [NotMapped]
    public string ThisObjectCachedAsJson { 
        get { 
            if(_jsonCache == null) 
                _jsonCache = <generate json>; 
            return _jsonCache; 
        }
    }
}
公共类MyPoco{
私有Guid _id;
私有字符串_myName;
私有字符串_jsonCache;
公共Guid Id{
获取{return\u id;}
设置{u jsonCache=null;_id=value;}
}
公共字符串MyName{
获取{return\u myName;}
设置{u jsonCache=null;_myName=value;}
}
[未映射]
公共字符串ThisObjectCachedAsJson{
获取{
if(_jsonCache==null)
_jsonCache=;
返回jsonCache;
}
}
}

您应该能够使用getter创建一个基类,并在那里调用一个方法将_jsonCache设置为null。这将使您的类更干净。

我不确定这是否是您的意思,但您可以将
[NotMapped]
注释添加到POCO上的属性中,这些属性只在代码中使用,不存储在数据库中

公共类MyPoco{
公共Guid Id{get;set;}
公共字符串MyName{get;set;}
[未映射]
公共字符串ThisObjectCachedAsJson{get;set;}
}
这是一个更完整的Json缓存需求示例,与POCO不同

public class MyPoco {

    private Guid _id;
    private string _myName;
    private string _jsonCache;

    public Guid Id { 
        get { return _id; } 
        set { _jsonCache = null; _id = value; }
    }

    public string MyName { 
        get { return _myName; } 
        set { _jsonCache = null; _myName = value; }
    }

    [NotMapped]
    public string ThisObjectCachedAsJson { 
        get { 
            if(_jsonCache == null) 
                _jsonCache = <generate json>; 
            return _jsonCache; 
        }
    }
}
公共类MyPoco{
私有Guid _id;
私有字符串_myName;
私有字符串_jsonCache;
公共Guid Id{
获取{return\u id;}
设置{u jsonCache=null;_id=value;}
}
公共字符串MyName{
获取{return\u myName;}
设置{u jsonCache=null;_myName=value;}
}
[未映射]
公共字符串ThisObjectCachedAsJson{
获取{
if(_jsonCache==null)
_jsonCache=;
返回jsonCache;
}
}
}

您应该能够使用getter创建一个基类,并在那里调用一个方法将_jsonCache设置为null。这将使您的类更干净。

如果有一种方法可以在“MyName”集合上更新它,这将非常有效。如果没有:)@cOK由于afaik EF总是调用您的setter/getter来存储/加载您的实体,您可以在所有普通属性setter中设置一个“dirty”标志,告诉Json getter在下次读取对象时重新序列化该对象。您可能不想在每个set操作上更新Json缓存,因为从数据库加载时可能会有很多操作:)可能是get;设置在“ThisObjectCacheAsJson”上可以实现使用本地成员按需序列化,在“MyName”上设置清除成员?在那一点上它感觉是如此的受污染。我认为这会起作用:)愚蠢的问题-如何在不改变EF的行为的情况下实现set?[NotMapped]对于私有和公共属性都是必需的,但对于EF(afaik)之后的字段则不是甚至不支持字段映射。若有一种方法可以在“MyName”集合上更新它,那个么这将非常有效。如果没有:)@cOK由于afaik EF总是调用您的setter/getter来存储/加载您的实体,您可以在所有普通属性setter中设置一个“dirty”标志,告诉Json getter在下次读取对象时重新序列化该对象。您可能不想在每个set操作上更新Json缓存,因为从数据库加载时可能会有很多操作:)可能是get;设置在“ThisObjectCacheAsJson”上可以实现使用本地成员按需序列化,在“MyName”上设置清除成员?在那一点上,它感觉是如此的受污染。我认为这会起作用:)愚蠢的问题-如何在不改变EF的行为的情况下实现set?私有和公共属性都需要[NotMapped],但字段不需要,因为EF(afaik)甚至根本不支持字段映射。