POCOクラスの使用法とエンティティ間の関係を学んでいます。
2つのテーブルがあります。そして、データモデルとそれらのPOCOクラスを作成しました。しかし、context.SaveChanges()を呼び出す前に、新しいVehicleエンティティと新しいJourneyを同時に追加しようとすると、これら2つの新しいエンティティが自動的に関連付けられます。つまり、新しいJourneyレコードのVehicleIdフィールドには、新しいVehicleレコードのIdが入力されます。
しかし、データモデルによって生成されたエンティティクラスに切り替えると、そのVehicleIdはnullになります。
エンティティを挿入するために使用したコードは次のとおりです。
using (var context = new TravelEntities())
{
var newVehicle = new Vehicle();
newVehicle.Name = "Fly by yourself";
context.Vehicles.AddObject(newVehicle);
var newJourney = new Journey();
newJourney.Location = "Wuyishan";
context.Journeys.AddObject(newJourney);
context.SaveChanges();
}
そして、POCOクラスとコンテキストクラス:
public class Vehicle
{
public virtual int Id { get; set; }
public virtual String Name { get; set; }
public virtual ICollection<Journey> Journeys { get; set; }
}
public class Journey
{
public virtual int Id { get; set; }
public virtual String Location { get; set; }
public virtual int VehicleId { get; set; }
public virtual Vehicle Vehicle { get; set; }
}
class TravelEntities : ObjectContext
{
ObjectSet<Vehicle> _vehicles;
ObjectSet<Journey> _journeys;
public TravelEntities()
: base("name=TravelEntities", "TravelEntities")
{
_vehicles = CreateObjectSet<Vehicle>();
_journeys = CreateObjectSet<Journey>();
}
public ObjectSet<Vehicle> Vehicles { get { return _vehicles; } }
public ObjectSet<Journey> Journeys { get { return _journeys; } }
}
そして、以下はデータベーススキーマです:
create table Vehicle
(
Id int identity(1,1) primary key,
Name nvarchar(max)
)
go
create table Journey
(
Id int identity(1,1) primary key,
Location nvarchar(max),
VehicleId int,
constraint FK_Journey_Vehicle foreign key(VehicleId) references Vehicle(Id)
)
go
私が知りたいのは、なぜ2つの新しいエンティティが関連付けられているのか、そしてどうすればこれを回避できるのかということです。助けてくれてありがとう。