まずデシベル(Breaz)に変更、再び、次のテーブルを作成し、あなたのデシベル
USE [Breaz]
GO
/****** Object: Table [dbo].[Relation] Script Date: 6/29/2016 4:35:32 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Relation](
[ID] [int] IDENTITY(1,1) NOT NULL,
[RelatedSomeValue] [varchar](10) NULL,
CONSTRAINT [PK_Relation] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
に一致するようにスクリプトの先頭にデータベースを変更、DBを作成します。
USE [Breaz]
GO
/****** Object: Table [dbo].[Example] Script Date: 6/29/2016 4:34:15 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Example](
[ID] [int] IDENTITY(1,1) NOT NULL,
[RelationID] [int] NOT NULL,
[SomeValue] [varchar](10) NULL,
CONSTRAINT [PK_Example] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Example] WITH CHECK ADD CONSTRAINT [FK_Example_Relation] FOREIGN KEY([RelationID])
REFERENCES [dbo].[Relation] ([ID])
GO
ALTER TABLE [dbo].[Example] CHECK CONSTRAINT [FK_Example_Relation]
GO
追加します各テーブルには2行のデータが格納されています。
dbから新しい項目ADO.NETエンティティデータモデルを追加し、両方のテーブルを追加します。 edmxのExampleModelに名前を付けます。 Example.Context.csファイルから(BreazEntities7)コンテキスト(コンテキスト)を取得します。ここで
public class HomeController : Controller
{
public ActionResult YIndex()
{
using (BreazEntities7 db = new BreazEntities7())
{
var allRecs = db.Examples;
foreach (var rec in allRecs)
{
rec.SomeValue = "TEST";
}
db.SaveChanges();
}
return View();
}
が生成例です:
namespace Testy2.Models
{
using System;
using System.Collections.Generic;
public partial class Example
{
public int ID { get; set; }
public int RelationID { get; set; }
public string SomeValue { get; set; }
public virtual Relation Relation { get; set; }
}
}
ここ
ID生成の関係:
あなたはEntityStateを指定する必要が
namespace Testy2.Models
{
using System;
using System.Collections.Generic;
public partial class Relation
{
public Relation()
{
this.Examples = new HashSet<Example>();
}
public int ID { get; set; }
public string RelatedSomeValue { get; set; }
public virtual ICollection<Example> Examples { get; set; }
}
}
。 db.Entry(rec).State = EntityState.Modified;このようにして、EFはオブジェクトのプロパティが変更されたことを知ります。 – Hakunamatata
これは根本的な問題には対処しません。私は自分のデータを読み込むのが怠惰だし、私がする必要があるのは単純なレコードを更新するだけで、すべての関連オブジェクトを「インクルード」したくないということです。 – mrb398
にはhttp://stackoverflow.com/questions/6038541/ef-validation-failing-on-update-when-using-lazy-loaded-required-propertiesの読み取りがあります。あなたがしたいことを光らせます。 – Hakunamatata