相关疑难解决方法(0)

在应用程序设置中存储字典<string,string>

我有一个字符串字典,我希望用户能够添加/删除信息然后存储它们,以便他们可以在下次程序重新启动时访问它

我不知道如何将字典存储为设置.我看到在system.collections.special下有一个叫做stringdictionary的东西,但我读过SD已经过时了,不应该使用它.

同样在将来我可能需要存储一个不仅仅是字符串的字典(int string)

如何在.net应用程序的设置文件中存储字典?

c# settings dictionary .net-3.5

33
推荐指数
2
解决办法
4万
查看次数

首先映射私有属性实体框架代码

我正在使用EF 4.1,并且因缺乏枚举支持而寻找一个很好的解决方法.int的支持属性似乎是合乎逻辑的.

    [Required]
    public VenueType Type
    {
        get { return (VenueType) TypeId; }
        set { TypeId = (int) value; }
    }

    private int TypeId { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是,如何将此属性设为私有并仍然映射它.换一种说法:

如何首先使用EF 4.1代码映射私有属性?

entity-framework private-members ef-code-first

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

我可以在EF实体中嵌入一个对象(在保存时序列化,在访问时反序列化)?

我有一个类,我想保留元数据 - 有几个交互场景,所以meta允许我为不同的交互类型保留不同的元.

class Feed()
{
    Guid FeedId { get; set; }
    ObjectMetaDictionary Meta { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望EF能够序列化这个ObjectMetaDictionary并将其作为字符串/ VarChar存储在数据库中.当我检索一条记录时,我希望它被反序列化为ObjectMetaDictionary.

EF支持吗?我该怎么做?

我正在使用Entity Framework Code First.

解决:我在下面提供了一个解决我的问题的答案.一旦SO允许我,我会接受这个答案.

entity-framework ef-code-first

20
推荐指数
1
解决办法
6853
查看次数

有没有办法在支持字段上应用值转换?

问题: Entity Framework Core 3.0 中是否有一种方法可以在支持字段上应用值转换

上下文: 假设我有一个博客实体,其中包含表示帖子 ID 的字符串值列表。我想避免需要连接实体/表(如此处所述,因此我进行转换以将列表作为字符串存储在数据库中。我还想保护我的模型不被直接通过 PostIds 属性修改,因此我想为此使用支持字段(如此处所述

像这样的东西:

public class Blog
{
    public int BlogId { get; set; }

    private readonly List<string> _postIds;
    public IReadOnlyCollection<string> PostIds => _postIds;

    public Blog()
    {
        _posts = new List<Post>();
    }
}
Run Code Online (Sandbox Code Playgroud)

上下文的配置看起来像这样:

protected override void OnModelCreating(ModelBuilder modelBuilder)  
{
    // Configuring the backing field
    modelBuilder.Entity<Blog>()
                .Metadata
                .FindNavigation(nameof(Blog.PostIds))
                .SetPropertyAccessMode(PropertyAccessMode.Field);

    // Trying to configure the value conversion, but that doesn't work...
    modelBuilder.Entity<Blog>()
                .Property(e => …
Run Code Online (Sandbox Code Playgroud)

entity-framework .net-core

7
推荐指数
0
解决办法
563
查看次数

类型 'string[]' 不是受支持的原始类型或有效的实体类型。- 如何反序列化 json 字符串?

我有以下 json

 "PayloadData": {
      "CustomFields": ['test','test2'],
      "SampleNumber":"123"
     }
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码来反序列化 json。

   Message message = JsonConvert.DeserializeObject<Message>(payloadData);
Run Code Online (Sandbox Code Playgroud)

这是我在Message课堂上的财产

    /// <summary>
    /// Gets or sets CustomFields
    /// </summary>
    [Required]
    [DataMember(Name = "CustomFields")]
    public List<string> CustomFields{ get; set; }
Run Code Online (Sandbox Code Playgroud)

但是,我得到以下错误。

“无法映射属性 'Message.CustomFields',因为它的类型是 'string[]',它不是受支持的原始类型或有效的实体类型。要么显式映射此属性,要么使用 '[NotMapped ]' 属性或通过在 'OnModelCreating' 中使用 'EntityTypeBuilder.Ignore'。”

c# json.net deserialization

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

如何使用 EF Core 3.1 将 IEnumerable&lt;string&gt; 的属性存储在 Cosmos 表中

我的项目使用 EF Core 3.1,并以 Azure Cosmos 作为数据库。

我有一个这样的实体:

public class MyEntity
{
    public IEnumerable<string> Names {get;set;}
    ... other fields
}
Run Code Online (Sandbox Code Playgroud)

我希望最终得到这样的 Cosmos 文档:

{
    "Names": ["Name1", "Name2"]
}
Run Code Online (Sandbox Code Playgroud)

对于实体 ( IEnumerable<string>) 我收到错误:

无法映射属性“MyEntity.Names”,因为它的类型为“IEnumerable”,该类型不是受支持的基元类型或有效的实体类型。

如果我将实体更改为:

public class NameEntity
{
    public string Name {get;set;}
}
public class MyEntity
{
    public IEnumerable<NameEntity> Names {get;set;}
    ... other fields
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyEntity>(e =>
    {
        e.OwnsMany(p => p.Identifiers);
    });
}
Run Code Online (Sandbox Code Playgroud)

该文档如下所示:

{
    "Id": "XXXXXX",
    "Names:" [
       {},
       {}
    ],
} …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core .net-core azure-cosmosdb

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