相关疑难解决方法(0)

实体框架 - 代码优先 - 无法存储列表<String>

我写了这样的课:

class Test
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public List<String> Strings { get; set; }

    public Test()
    {
        Strings = new List<string>
        {
            "test",
            "test2",
            "test3",
            "test4"
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

和

internal class DataContext : DbContext
{
    public DbSet<Test> Tests { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

运行代码后:

var db = new DataContext();
db.Tests.Add(new Test());
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我的数据正在保存但只是保存Id.我没有任何表格,也没有适用于字符串列表的关系.

我究竟做错了什么?我也尝试制作字符串, virtual但它没有改变任何东西.

谢谢您的帮助.

.net c# entity-framework

82
推荐指数
9
解决办法
7万
查看次数

EF核心支持字段-将属性公开为另一种类型?

假设我有一个EF实体类Person,上面有一个PhoneNumber。PhoneNumber以字符串类型存储,但是我希望对Person的所有访问都通过Phone进行,Phone具有一些不错的访问器功能,例如验证或GetAreaCode()。我想将它作为字符串备份在数据库中,但是当查询它时,我想将其作为PhoneNumber返回:

public class Person {
    public PhoneNumber Phone { /* Some clever get/set logic here */ }

    private string _phoneNumber; // Backing field
}
Run Code Online (Sandbox Code Playgroud)

还是可以让PhoneNumber将自身存储为字符串?如果我只是通过删除上面的后备字段将其包括在模型中,则EF会被构造函数(一个受保护的ctor,具有比一个字符串多的args)和一个副本ctor混淆PhoneNumber(PhoneNumber other)。我可以让EF以某种方式忽略这些吗?

我愿意接受...

c# entity-framework-core

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