没有外键的实体框架映射

时间:2018-06-06 00:25:03

标签: entity-framework ef-fluent-api

我在这里遇到了一个特殊情况,我一直试图弄清楚如何在Fluent Api中配置它。

我有一个名为 Customers 的现有数据库中的表。我无法对此表进行任何修改。

我尝试在外部数据库中实施 CustomerGroup 表。由于我无法修改Customers表,因此无法向Customers添加外键。客户可能属于也可能不属于客户群。

我可以就如何处理此问题使用一些建议。这不是一个理想的情况,因为我无法修改customers表。由于我试图在同一台服务器上的一个单独的数据库中实现它,我知道可能存在一些完整性问题,因为我无法在客户和客户组之间实现真正的密钥关系。

现在我的方法一直在尝试实现一种具有CustomerId CustomerGroupId的联结表。我试图配置流畅的api来在我的客户实体和我的CustomerGroup实体之间建立导航属性,而没有单独的实体。

代码示例(简化):

public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public CustomerGroup CustomerGroup { get; set; }
    }
public class CustomerGroup
{
     public int Id { get; set; }
     public string Name { get; set; }
     public ICollection<Customer> { get; set; }
}

数据库:

客户

CREATE TABLE [dbo].[Customer]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Name] VARCHAR(100) NOT NULL DEFAULT ''
)

CustomerGroup

CREATE TABLE [dbo].[CustomerGroup]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Name] VARCHAR(100) NOT NULL DEFAULT ''
)

CustomerGroupCustomer

CREATE TABLE [dbo].[CustomerGroupCustomer]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [CustomerGroupId] INT NOT NULL, 
    [CustomerId] INT NOT NULL UNIQUE, 
    CONSTRAINT [FK_CustomerGroup_Customer_CustomerGroup] FOREIGN KEY ([CustomerGroupId]) REFERENCES [CustomerGroup]([Id]) ON DELETE CASCADE

)

0 个答案:

没有答案