标签: shared-primary-key

首先了解实体框架代码中的ForeignKey属性

有关背景信息,请参阅以下帖子:

实体框架一到零或一个没有导航属性的关系

我一直认为这ForeignKey用于显示类中哪个属性持有确定导航属性的ForeignKey,例如

public class MemberDataSet
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int? DeferredDataId { get; set; }
    [ForeignKey("DeferredDataId")]
    public virtual DeferredData DeferredData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,我在链接的帖子上发现这是不对的,因为DeferredData的主键被称为Id我实际需要:

public class MemberDataSet
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int? DeferredDataId { get; set; }
    [ForeignKey("Id")]
    public virtual DeferredData DeferredData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ForeignKey用于指向其他类.

然后我继续改变其他一些参考文献:

public class MemberDataSet
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework foreign-keys code-first shared-primary-key

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

共享主键

我猜这是一个半常见的问题,但我在过去的问题列表中找不到它.我有一组需要共享主键索引的产品表.假设如下:

product1_table:
    id,
    name,
    category,
    ...other fields

product2_table:
    id,
    name,
    category,
    ...other fields

product_to_category_table:
    product_id,
    category_id
Run Code Online (Sandbox Code Playgroud)

显然,在两个产品表之间建立共享索引会很有用.注意,保持它们分开的想法是因为它们除了基础之外还有很多不同的字段集,但是它们共享一个共同的分类.

更新:

很多人都建议使用表继承(或gen-spec).这是我所知道的一个选项,但在其他数据库系统中我可以在表之间共享一个序列,我希望MySQL有类似的解决方案.我认为它不是基于回答.我想我必须继续使用表继承...谢谢大家.

mysql tags database-design shared-primary-key

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

EF6 无法为表拆分/共享主键 + 基类构建模型?

问题

我正在尝试按照我之前的问题使用表拆分来共享大约 7 个实体的大表(200+字段)。

EF6 不仅需要从主模型到子模型的导航属性,还需要所有子模型之间的导航属性(这很糟糕)。

手动解决

这可以手动完成:

public class Franchise
{
    [Key]
    public int Id { get; set; }
    public virtual FranchiseEntity Entity { get; set; }
    public virtual FranchiseMiscellaneous Miscellaneous { get; set; }
}

[Table("Franchise")]
public class FranchiseEntity
{
    [Key]
    public int Id { get; set; }
    public virtual FranchiseEntity Entity { get; set; } // Ignored, but relevant when inheritance involved, below...
    public virtual FranchiseMiscellaneous Miscellaneous { get; set; }
}

[Table("Franchise")]
public class …
Run Code Online (Sandbox Code Playgroud)

inheritance domain-driven-design entity-framework shared-primary-key table-splitting

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

将行插入1:1相关表

我想将新行放入与1:1相关的表中sql-server. 这些表的图表

如您所见,表使用相同的主键相互引用.这就是问题 - 我知道用两次INSERT调用放置数据会给我一个错误,说我违反了PK约束.有没有办法在代码中执行此操作?我想创建一个存储过程,用于添加"主要产品"(SUROWCE)并对应于它记录在"stock"(STAN)中.

我的代码尝试: INSERT INTO STAN VALUES(25, 5, 1000); INSERT INTO SUROWCE VALUES(25, 'wood');

Msg 547, Level 16, State 0, Line 4 The INSERT statement conflicted with the FOREIGN KEY constraint "FK_STAN_SUROWCE". The conflict occurred in database "TestBazyDanych", table "dbo.SUROWCE", column 'ID_SUROWCA'.

t-sql sql-server shared-primary-key sql-insert

0
推荐指数
1
解决办法
79
查看次数