私はこれで涙が出そうです。
このオブジェクトには、FirstName、LastName などのいくつかのプロパティがあります。すべて単純なタイプです。文字列 int など
これらは正常にロードおよび更新されます。
public class Jobwalker
{
[Key]
public Int64 ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public bool Suspended { get; set; }
public TelephoneCountryCode TelephoneCountryCodeObject { get; set; }
...
ただし、ユーザーオブジェクトには、別のクラスであるプロパティ「TelephoneCountryCodeObject」もあります
public class TelephoneCountryCode
{
[Key]
public Guid ID { get; set; }
public string Code { get; set; }
public string Country { get; set; }
public TelephoneCountryCode()
{
}
...
dmodify 'TelephoneCountryCode' オブジェクトを作成して削除することはできますが、ユーザー オブジェクトのインスタンスを保存しようとすると、単純な型だけが更新されますか?
public void Save()
{
try
{
using (var db = new MainContext())
{
db.TelephoneCountryCodes.Attach(TelephoneCountryCodeObject);
Jobwalker result = (from jw in db.Jobwalkers
.Include("TelephoneCountryCodeObject")
where jw.UmbracoMemberID == UmbracoMemberID
select jw).FirstOrDefault();
db.Entry(result).CurrentValues.SetValues(this);
if (this.TelephoneCountryCodeObject != null)
{
result.TelephoneCountryCodeObject = db.TelephoneCountryCodes.Find(this.TelephoneCountryCodeObject.ID);
}
else
{
result.TelephoneCountryCodeObject = null;
}
db.Entry(result).State = EntityState.Modified;
db.SaveChanges();
}
}
catch(Exception ex)
{
throw;
}
}
どんなアイデアでも大歓迎です!
編集:私はこの超簡単なテスト方法を作成しました
public static void TEST()
{
try
{
using (var db = new MainContext())
{
Jobwalker result = (from jw in db.Jobwalkers
.Include("TelephoneCountryCodeObject")
where jw.UmbracoMemberID == 1184
select jw).FirstOrDefault();
result.TelephoneCountryCodeObject = TelephoneCountryCode.GetByName("denmark");
db.TelephoneCountryCodes.Attach(result.TelephoneCountryCodeObject);
result.FirstName = "Flemming";
db.SaveChanges();
}
}
catch (Exception ex)
{
throw;
}
}
これは想定どおりに機能します。では、 * * 通常の Save() メソッドが機能しないのはなぜでしょうか?