Je suis vraiment un newbie LINQ. J'ai un problème inconnu:SubmitChanges() mise à jour seulement 1 champ?
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;
}
}
Lors de l'utilisation de cette méthode, un seul champ a été mis à jour !! Voici mon journal:
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
Même j'ai changé presque de champs, ma table a déjà la clé primaire. Mais toujours problème.
Aidez s'il vous plaît!
Merci Marc. J'avais vérifié cette méthode avec soin. Je ne sais toujours pas pourquoi cette merde arrive. Tout va bien jusqu'à ce que SubmitChanges() soit exécuté. Tous mes champs ont assez de set & get méthode aussi bien. –
Comme mon code est trop long, je ne peux pas tous les ramener ici. De toute façon, presque des colonnes sont définies avec les propriétés suivantes: [Colonne (Name = "i_artist_id", Stockage = "_ArtistID", DbType = "Int NON NULL DEFAULT 0", CanBeNull = false, UpdateCheck = UpdateCheck.Never) ] Que voulez-vous dire à propos de la propriété 'readonly'? Je n'ai trouvé aucune telle chose comme ça. Il n'y a pas non plus de champ 'readonly' dans ma base de données. Merci Marc! –
Marc, J'ai vérifié, mais tous en lecture seule sont faux. Y a-t-il un moyen raisonnable? –