相关疑难解决方法(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万
查看次数

首先使用Entity Framework 6.1代码保留和检索序列化实体属性

示例:假设我有这三个类.Foo是一个DbSet适当的实体框架的实体,而我希望我的EF的DbContext是不知道的Bar,并Baz因为我检举了Foo的酒吧财产与我组成SerializedColumn的属性.通过应用该属性,我希望EF将带有Bazes的Bar实例序列化为单个字符串字段,并在EF实现Foo时透明地将Bar反序列化为Bar对象.

public class Foo
{
    public Guid Id { get; set; }
    [SerializedColumn]
    public Bar Bar { get; set; }
    // ..
}

public class Bar
{
    public string Name { get; set; }
    public Baz[] Baz { get; set; }
    // ..
}

public class Baz
{
    public string Name { get; set; }
    // ..
}
Run Code Online (Sandbox Code Playgroud)

所以Foo的表列看起来像:

[Id] [uniqueidentifier] NOT NULL
[Bar] [nvarchar](max) NULL
Run Code Online (Sandbox Code Playgroud)

当我查询一个时,Foo我会回来一个Bar已经反序列化的属性.当我插入或更新Foo …

entity-framework ef-code-first ef-migrations entity-framework-6 entity-framework-6.1

7
推荐指数
1
解决办法
1678
查看次数

如何在EF4.3代码优先的情况下映射到复杂类型?

我有一个像这样的实体类型:

public class Invoice{
    public int Id { get; set; }
    public InvoiceNumberSequence Sequence { get; set; }
    public decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

InvoiceNumberSequence如下所示:

public class InvoiceNumberSequence { 
    public string Prefix { get; set; }
    public int Number { get; set; }

    public string GetSequence() {
        return Prefix + Number;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我有一个我无法更改的现有数据库,我正在尝试将表/列映射到我的域模型.这是表格的外观:

[SYSTEMINVOICES]
INVOICE_ID int
INV_TOTAL decimal
INVOICE_SEQ varchar(255)
Run Code Online (Sandbox Code Playgroud)

DbContext喜欢这样的:

public MyDatabaseContext : DbContext {
    public DbSet<Invoice> Invoices { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# oracle entity-framework ef-code-first entity-framework-4.1

4
推荐指数
1
解决办法
1625
查看次数