나는 정말 LINQ 초보자입니다. 이 방법을 사용하는 경우SubmitChanges() 필드를 1 개만 업데이트 하시겠습니까?
public static int save(TEntity obj)
{
var table = dbo.GetTable<TEntity>();
var mapping = dbo.Mapping.GetTable(typeof(TEntity));
var pkfield = mapping.RowType.DataMembers.Where(d => d.IsPrimaryKey).Take(1).SingleOrDefault();
if (Convert.ToInt32(obj.GetType().GetProperty(pkfield.Name).GetValue(obj, null)) == 0)
table.InsertOnSubmit(obj);
try
{
dbo.SubmitChanges();
}
catch (ChangeConflictException e)
{
dbo.SubmitChanges();
}
if (dbo.ChangeConflicts.Count == 0)
{
ClearCache(dbo);
return Convert.ToInt32(obj.GetType().GetProperty(pkfield.Name).GetValue(obj, null));
}
else
{
dbo.ChangeConflicts.ResolveAll(System.Data.Linq.RefreshMode.KeepCurrentValues);
return 0;
}
}
는 만 1 필드가 업데이트되어 있습니다 !! : 나는 알 수없는 문제가있어 여기 내 기록은 다음과 같습니다.
UPDATE [dbo].[tbl_album]
SET [dt_m_date] = @p1
WHERE [i_album_id] = @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
-- @p1: Input BigInt (Size = 0; Prec = 0; Scale = 0) [1256485605]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4918
거의 모든 필드가 변경 되어도 내 테이블에는 기본 키가 이미 있습니다. 그러나 여전히 문제.
도와주세요!
Marc. 나는 그 방법을주의 깊게 조사했다. 나는 아직도이 쓰레기가 왜 발생하는지 모른다. SubmitChanges()가 실행될 때까지는 모두 괜찮습니다. 모든 필드에는 충분한 set & get 메서드가 있습니다. –
내 코드가 너무 길어서 여기에 모든 코드를 가져올 수 없기 때문에. 어쨌든 대부분의 열은 다음 속성으로 설정됩니다. [Column (Name = "i_artist_id", Storage = "_ArtistID", DbType = "Int NOT NULL DEFAULT 0", CanBeNull = false, UpdateCheck = UpdateCheck.Never) ] '읽기 전용'속성에 대해 무엇을 의미합니까? 이런 건 찾지 못했습니다. 또한 데이터베이스에는 '읽기 전용'필드가 없습니다. Marc! 감사합니다. –
Marc, 확인했지만 모든 읽기 전용은 거짓입니다. 어떤 합리적인 방법이 있습니까? –