好的。我有國家有列表。我想要有多個使用同一系列列表的State實例。如何使用列表<model>通過引用而不是值?
public class State
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Series> Serieses { get; set; }
}
public class Series
{
public int Id { get; set; }
public string Name { get; set; }
}
在國家的名稱輸入,並從列表框選擇1個或多個系列創建狀態後:
public ActionResult Create(State state, FormCollection form)
{
// method to get selected Series from db
foreach (var sItem in seriesModel//List of Possible Series)
{
foreach (var item in Selections//User selected Series)
{
if (sItem.Name == item.Name)
{
newSeries.Add(sItem);
}
}
}
state.Serieses = newSeries;
_db.Entry(state).State = EntityState.Modified;
_db.SaveChanges();
的問題是在我創建列表狀態的一個實例。如果我創建第二個實例並在其列表中使用同一個系列,則第一個將在其列表中丟失該系列。所以很明顯,Series是通過值傳遞而不是引用。我是C#的新手,但回到C++我們會使用指針。這樣,如果我更改系列的原始值,它將顯示在指向它的每個州列表上。我也注意到在數據庫的表數據中,它已經爲每個系列添加了一個外鍵State_Id。這是我使用Code First方法時創建的表定義。
CREATE TABLE [dbo].[Series] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (MAX) NULL,
[State_Id] INT NULL,
CONSTRAINT [PK_dbo.Series] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_dbo.Series_dbo.States_State_Id] FOREIGN KEY ([State_Id]) REFERENCES [dbo].[States] ([Id])
是MODELA假設是國家和ModelB假設是系列? – eluxen
是的。一個州有多個系列的清單,其他國家也可以使用。 –
我不明白你爲什麼從列表中失去系列。還有你想過使用'struct'而不是'class'來實現Series。 –