Domanda

Ho un insieme di oggetti DB seduto in un EntitySet sulla mia definizione dell'oggetto principale. Questo gestisce integrazioni e aggiornamenti bene, ma ho trovato le voci rimozione dalla lista non ha provocato i record del database viene cancellato, quindi ho dovuto creare un metodo nell'oggetto repository di dati per eliminare i record come l'oggetto di dati non lo fa avere accesso ai dati contesto in cui viene utilizzato.

Stavo cercando di vedere se riuscivo a portare questa eliminare nell'oggetto principale e ho trovato l'attributo DeleteOnNull all'associazione, ma quando lo uso, ottengo un errore "DeleteOnNull può essere vero per i membri dell'associazione Singleton solo mappato non nullable colonne chiave esterna". Il mio codice è:

private EntitySet<UserSite> _userSites = new EntitySet<UserSite>();
[Association(Name = "User_UserSites", Storage = "_userSites", ThisKey = "UserID", OtherKey = "UserID", DeleteOnNull=true)]
public IList<UserSite> UserSites { get { return _userSites; } set { } }

il mio oggetto usersite è

[Table(Name="UserSite")]
public class UserSite
{
    [Column]//(IsPrimaryKey = true)]
    public int UserID { get; set; }

    [Column]//(IsPrimaryKey = true)]
    public string Site { get; set; }

    [Column]
    public bool DefaultSite { get; set; }

    [Column(IsPrimaryKey = true, AutoSync = AutoSync.OnInsert)]
    public int UniqueID { get; set; }
}

È possibile utilizzare DeleteOnNull per mantenere tutti i miei metodi di aggiornamento dei dati nel mio oggetto utente principale, o devo gestire le eliminazioni a livello repository?

È stato utile?

Soluzione

DeleteOnNull è solo per Singleton associazioni . Così si può mettere sul UserSite.User ma non su User.UserSites. E 'ancora non è così automatica come si vorrebbe che fosse, però. C'è un esempio qui.

E 'difficile per LINQ to SQL per dedurre il comportamento desiderato, perché non può indovinare se si desidera composizione o aggregazione , quindi sceglie la congettura di sicurezza (aggregazione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top