Table<TEntity>.Attach Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kopplar en entitet till DataContext.
Överlagringar
| Name | Description |
|---|---|
| Attach(TEntity) |
Kopplar en frånkopplad eller "frånkopplad" entitet till en ny DataContext när ursprungliga värden krävs för optimistiska samtidighetskontroller. |
| Attach(TEntity, Boolean) |
Kopplar en entitet till DataContext i ett ändrat eller omodifierat tillstånd. |
| Attach(TEntity, TEntity) |
Kopplar en entitet till DataContext i antingen ett ändrat eller oförändrad tillstånd genom att ange både entiteten och dess ursprungliga tillstånd. |
Kommentarer
Attach Använd metoderna med entiteter som har skapats i en DataContext, serialiserad till en klient och sedan deserialiserad tillbaka (med avsikt att utföra en uppdaterings- eller borttagningsåtgärd). Mer information finns i Datahämtning och CUD-åtgärder i N-nivåprogram (LINQ till SQL).
Försök inte till Attach en entitet som inte har kopplats från via serialisering. Entiteter som inte har serialiserats upprätthåller fortfarande associationer med uppskjutna inläsare som kan orsaka oväntade resultat om entiteten spåras av en andra datakontext.
När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.
Attach bifogar alla entiteter i objektdiagrammet för det angivna objektet. Ett exempel:
using (var db = new SampleDataContext())
{
var employee = new Employee { employeeId = 1 };
var master = new Master();
master.Employee = employee;
var child = new Child();
child.Employee = employee;
db.Employees.Attach(employee);
master.Child = child;
db.Masters.InsertOnSubmit(master);
db.SubmitChanges();
}
Using db As New SampleDataContext()
Dim employee As New Employee With { .employeeId = 1 }
Dim master As New Master()
master.Employee = employee
Dim child As New Child()
child.Employee = employee
db.Employees.Attach(employee)
master.Child = child
db.Masters.InsertOnSubmit(master)
db.SubmitChanges()
End Using
Att anropa AttachEmployee kopplar medarbetare, huvudnamn och underordnad, eftersom har relationer till både huvud- och underordnad Employee . Du måste uttryckligen anropa InsertOnSubmit för att ändra tillståndet från bifogat till infogat.
Attach(TEntity)
Kopplar en frånkopplad eller "frånkopplad" entitet till en ny DataContext när ursprungliga värden krävs för optimistiska samtidighetskontroller.
public:
void Attach(TEntity entity);
public:
virtual void Attach(TEntity entity);
public void Attach(TEntity entity);
member this.Attach : 'Entity -> unit
abstract member Attach : 'Entity -> unit
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)
Parametrar
- entity
- TEntity
De ursprungliga värdena för den entitet som ska kopplas.
Implementeringar
Kommentarer
Attach Använd metoderna med entiteter som har skapats i en DataContext, serialiserade till en klient och sedan deserialiseras tillbaka för att utföra en uppdaterings- eller borttagningsåtgärd. Eftersom den nya DataContext inte har något sätt att spåra vad de ursprungliga värdena var för en frånkopplad entitet ansvarar klienten för att tillhandahålla dessa värden. I den här versionen av Attachantas entiteten vara i sitt ursprungliga värdetillstånd. När du har anropat den här metoden kan du sedan uppdatera dess fält, till exempel med ytterligare data som skickas från klienten.
När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.
Mer information finns i Datahämtning och CUD-åtgärder i N-nivåprogram (LINQ till SQL).
Försök inte till Attach en entitet som inte har kopplats från via serialisering. Entiteter som inte har serialiserats upprätthåller fortfarande associationer med uppskjutna inläsare som kan orsaka oväntade resultat om entiteten spåras av en andra datakontext.
Gäller för
Attach(TEntity, Boolean)
Kopplar en entitet till DataContext i ett ändrat eller omodifierat tillstånd.
public:
void Attach(TEntity entity, bool asModified);
public void Attach(TEntity entity, bool asModified);
member this.Attach : 'Entity * bool -> unit
Public Sub Attach (entity As TEntity, asModified As Boolean)
Parametrar
- entity
- TEntity
Entiteten som ska kopplas.
- asModified
- Boolean
true för att bifoga entiteten som ändrad; false för att koppla entiteten som oförändrad.
Kommentarer
Om entiteten bifogas som ändrad måste den antingen deklarera en versionsmedlem eller inte delta i kontrollen av uppdateringskonflikter. När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.
Gäller för
Attach(TEntity, TEntity)
Kopplar en entitet till DataContext i antingen ett ändrat eller oförändrad tillstånd genom att ange både entiteten och dess ursprungliga tillstånd.
public:
void Attach(TEntity entity, TEntity original);
public void Attach(TEntity entity, TEntity original);
member this.Attach : 'Entity * 'Entity -> unit
Public Sub Attach (entity As TEntity, original As TEntity)
Parametrar
- entity
- TEntity
Entiteten som ska kopplas.
- original
- TEntity
En instans av samma entitetstyp med datamedlemmar som innehåller de ursprungliga värdena.
Exempel
using (Northwnd db2 = new Northwnd(@"c:\northwnd.mdf"))
{
Customer Cust_File = new Customer();
string xmlFile = "";
// Get the original object from the deserializer.
Customer c = SerializeHelper.Deserialize<Customer>
(xmlFile, Cust_File);
// Set all the desired properties to the entity to be attached.
Customer c_updated = new Customer() { CustomerID = c.CustomerID,
Phone = "425-123-4567", CompanyName = "Microsoft" };
db2.Customers.Attach(c_updated, c);
// Perform last minute updates, which will still take effect.
c_updated.Phone = "425-765-4321";
// SubmitChanges()sets the phoneNumber and CompanyName of
// customer with customerID=Cust. to "425-765-4321" and
// "Microsoft" respectively.
db2.SubmitChanges();
}
Using db = New Northwnd("...")
Dim Cust_File As New Customer()
Dim xmlFile As String = ""
'Get the original object from the deserializer.
Dim c As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFile, Cust_File)
' Set all the desired properties to the entity to be attached.
Dim c_updated As New Customer With {.CustomerID = c.CustomerID, _
.Phone = "425-123-4567", .CompanyName = "Microsoft"}
db.Customers.Attach(c_updated, c)
' Perform last minute updates, which will still take effect.
c_updated.Phone = "425-765-4321"
' SubmitChanges()sets the phoneNumber and CompanyName of
' customer with customerID=Cust. to "425-765-4321" and
' "Microsoft" respectively.
db.SubmitChanges()
End Using
Kommentarer
I följande exempel är objektet Customer redan korrekt konfigurerat. Du kan anropa Attach utan att behöva spela upp uppdateringarna igen.
När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.