8

在这里,我们在 EF Core 上并获得了 3 个表:

  1. 消息
  2. 项目
  3. 链接

以及更多(新闻、项目除外):内容、帖子、表格等。

还有我的模型定义

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public Link Link { get; set; }
}

public class News
{
    public int Id { get; set; }
    public string Header { get; set; }
    public string Content { get; set; }
    public Link Link { get; set; }
}

public class Link
{
    public int Id { get; set; }
    public string Type { get; set; }
    public int RowId  { get; set; }
    public string Url { get; set; }
}

表格Links描述了每个新闻和每个项目的 URL。这意味着Links有 4 列:

  1. ID
  2. 类型 - 新闻或项目
  3. RowId - 包含项目或新闻的 ID(取决于类型)
  4. 网址

如何设置关系?请记住,我们需要通过链接表中的 URL 解析实体。

4

5 回答 5

1

小巧玲珑。只是允许编写自定义查询的 Dapper。

于 2017-06-04T14:24:49.967 回答
0

为了拥有 NewRow 属性以及对其他两个表的约束,您可以像这样冷实现它:

public int RowId { 
    public get {
        return this.Type.equals("news") ? NewsId.Value : ItemId.Value;
    };   
    private set {
        if(this.Type.equals("news")){
          NewsId = value;
        }
        else{
          ItemId = value;
        }
    }
}

然后将此属性设置为未映射到 ContextDB。

于 2017-04-11T19:24:23.450 回答
0

我认为您可以从 links 表中删除 rowid 并在其他 2 个表中添加一个外键列,以引用 links 表中的 id 列。

现在,有了 URL,有了类型和 id,就可以从相应的表中查询内容。

于 2017-04-09T02:12:57.993 回答
0

更新


我再次阅读了你的问题,老实说,你不必为链接创建另一个表,只需在新闻和项目等中添加一个列......你会没事的。

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public string Url { get; set; }
}

public class News
{
    public int Id { get; set; }
    public string Header { get; set; }
    public string Content { get; set; }
    public string Url { get; set; }
}
于 2017-03-25T13:14:11.837 回答
0

我将更Link改为使用 nullable int,并将这些表的外键分开:

public class Link
{
    public int Id { get; set; }
    public string Type { get; set; }
    public int? NewsId  { get; set; }
    public int? ItemId  { get; set; }
    public string Url { get; set; }
}
于 2017-04-05T05:12:16.207 回答