【发布时间】:2014-06-19 07:59:04
【问题描述】:
我有 3 个表,但是当我创建我的 edmx 时,它仅在 edmx 模型上显示 2 个。我也无法通过导航访问我的外部参照表。我能够将每个表的主键 ID 插入外部参照表,但我不知道如何修改外部参照表,因为我没有获得任何导航属性并且它没有显示在模型中。这是表格
**Subscription Table**
[Id] [int] IDENTITY(1,1) NOT NULL,
[SubscriptionTypeId] [int] NOT NULL,
[Active] [bit] NULL,
[IsScheduledNotification] [bit] NOT NULL,
[NotificationFrequencyInMinutes] [int] NOT NULL,
[CompanyId] [int] NULL,
CONSTRAINT [PK__Subscription] PRIMARY KEY CLUSTERED
**[Exchange]**
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Code] [nvarchar](100) NULL,
PRIMARY KEY CLUSTERED
**[SubscriptionExchange] - Xref table**
[SubscriptionId] [int] NOT NULL,
[ExchangeId] [int] NOT NULL,
CONSTRAINT [PK_SubscriptionExchanges] PRIMARY KEY CLUSTERED
(
[SubscriptionId] ASC,
[ExchangeId] ASC
)
所以我正在使用 Asp.Net MVC 并尝试修改记录。我目前可以修改 Subcription 表,但也需要修改 [SubscriptionExchange] 外部参照表。
我已经在数据库中为 SubscriptionExchange 表设置了外键
问题是当我执行以下代码时,它没有考虑更新 SusbcriptionExchange 表。下面的对象 a 是指数据库中的订阅表,您会在块中看到交换集合。我已经用交换 id 初始化了集合。订阅 ID 在第一行初始化。
Avanade.Bureau.DataAccessLayer.DatabaseModel.Subscription a = new DataAccessLayer.DatabaseModel.Subscription
{
Id = model.SubscriptionId,
SubscriptionTypeId = model.SubscriptionTypeId,
IsScheduledNotification = false,
Active = true,
NotificationFrequencyInMinutes = 104,
Exchanges = GetExchanges(postedExchanges, bureauEntities),
Users = GetUsers(postedUsers, bureauEntities),
CompanyId = model.CompanyId
};
bureauEntities.Entry(a).State = EntityState.Modified;
bureauEntities.Subscriptions.Attach(a);
bureauEntities.SaveChanges();
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 entity-framework-5