【发布时间】:2020-07-20 02:54:40
【问题描述】:
我有一个只有外键的表的数据库。我可以手动将数据添加到此表中,然后使用代码将其删除。但是,我无法向其中添加数据。这可能是因为我实际上不知道如何访问我的表,或者我做错了。感谢您的帮助。
我的外键唯一表:
CREATE TABLE UserCategory
(
CatID INT FOREIGN KEY REFERENCES Category(ID),
UserID NVARCHAR(128) FOREIGN KEY REFERENCES [User](ID),
CONSTRAINT PK_UserCategory PRIMARY KEY (CatID, UserID)
);
在模型中链接它的代码:
modelBuilder.Entity<Category>()
.HasMany(e => e.Users)
.WithMany(e => e.Categories)
.Map(m => m.ToTable("UserCategory").MapLeftKey("CatID").MapRightKey("UserID"));
如您所见,我有一个名为我创建的表,其中包含预期的值。
但是,当我尝试通过代码访问此表时,我无法直接访问这些值。我可以像这样删除值:
var userCats = thisUser.Categories.ToList();
foreach (var cat in userCats)
{
thisUser.Categories.Remove(cat);
}
但是当我尝试访问 UserCategories 属性时,我得到了这个:
如何将新的UserCategories 添加到我的数据库中?如果我只是创建一个新的Category,并以与删除一个相同的方式添加它(但显然是Add),我需要填写Name。然后当我填写Name 时,它告诉我存在密钥冲突,因为它似乎将其添加到Category 表中,而不是UserCategory。
这里是另外两个有问题的表:
CREATE TABLE [User]
(
ID NVARCHAR(128) PRIMARY KEY,
FirstName VARCHAR(255) NOT NULL,
LastName VARCHAR(255),
JoinDate DATETIME,
ZipCode VARCHAR(25),
SearchRadius INT,
LoginToBusinessSide BIT
);
/*The categories businesses can fall under. */
CREATE TABLE Category
(
ID INT IDENTITY(1,1) PRIMARY KEY,
[Name] VARCHAR(255) UNIQUE NOT NULL,
);
我是否尝试访问错误?我怎样才能正确访问它?谢谢。
【问题讨论】:
-
为了添加到
UserCategory,您需要添加一条记录到User,获取它的ID,然后添加一条记录到Category,获取它的ID。拥有这两个 ID 后,您可以将这些 ID 插入到UserCategory。 -
@user212514 你能用代码告诉我怎么做吗?我已经为这个问题苦苦挣扎了很长时间,非常感谢您的帮助。
-
我建议您在学习概念时只关注 SQL。在您感觉自己掌握得很好之后,再对 C# 代码进行分层。这是一个 SQL 示例:stackoverflow.com/questions/38580619/…
标签: c# asp.net sql-server