【发布时间】:2023-04-01 18:30:01
【问题描述】:
我认为我正在寻找的实际上是实体分割。但是,我不能 100% 确定我需要的方式是否受支持。因此,我将添加大量细节,希望对您有所帮助。我会将范围限制为一个实体,因为我必须处理的所有实体的答案都是相同的。
所以,我有一个用户实体:
User
ID (int)
CustID (int)
CustomerString (string)
FirstName (string)
LastName (string)
Email (string)
由于我们的数据库是多租户的,每个对象都有与之相关联的所有者的概念。这由所有表中的 CustID 表示。但是,对于将访问此数据服务的客户来说,此 ID 是一个毫无意义的 PK。他们知道他们的 CustomerString,这只是一个唯一的字符串值,等同于我们 Client 表中的 ID。
与User实体相关的两个表如下:
客户
CREATE TABLE [Customers](
[ID] [int] NOT NULL,
[Name] [varchar](100) NOT NULL,
[Description] [varchar](255) NULL,
[ClientPhone] [varchar](20) NULL,
[Address] [varchar](255) NULL,
[CustomerString] [varchar](100) NOT NULL,
[sys_CreateDate] [datetime] NOT NULL,
[sys_LastUpdate] [datetime] NOT NULL,
CONSTRAINT [PK_Customers] PRIMARY KEY NONCLUSTERED
(
[ID] ASC
)
用户
CREATE TABLE [Users](
[UserID] [int] IDENTITY(2000000,1) NOT NULL,
[CustID] [int] NOT NULL,
[FirstName] [varchar](40) NOT NULL,
[LastName] [varchar](40) NOT NULL,
[mail] [varchar](255) NULL,
[CreateDate] [datetime] NOT NULL,
[ModifyDate] [datetime] NOT NULL,
CONSTRAINT [PK2_Users] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)
所以,目前,我将 User 实体映射到 Users 表,如下所示:
ID ==> Users.UserID
CustID ==> Users.CustID
CustomerString <NOT MAPPED>
FirstName ==> Users.FirstName
LastName ==> Users.LastName
Email ==> Users.Mail
现在,我的症结来了。我需要将 CustomerString 映射到 Customers.CustomerString,其中 Users.CustID = Customers.ID。在我看来,根据我的阅读,如果每个表中的 ID 命名相同,这将不是问题。但是,如您所见,情况并非如此。
请帮忙!这是我过去一个月左右一直在工作的这个项目的绝对要求。
提前感谢您提供的任何帮助!
瑞恩
【问题讨论】:
-
User.CustomerString 可以是只读字符串吗?
标签: c#-4.0 entity-framework-4 entity-framework-ctp5