c# - tutorial - porque usar entity framework
Tabla de sincronizaciĆ³n de Entity Framework 6 con fuente externa (1)
Estoy construyendo un servicio de Windows para extraer todas las redes de una API de terceros e insertar / actualizar esas redes en nuestra base de datos local. Aquí está mi Entidad:
public partial class Networks
{
public string networkID { get; set; }
public int organizationID { get; set; }
public string type { get; set; }
public string name { get; set; }
public string time_zone { get; set; }
public string tags { get; set; }
}
Actualmente, repito a través de todas las redes devueltas por la API, compruebo si la identificación existe, si comprueba cada campo y si alguno de los campos no coincide, actualícelos todos.
public void SyncNetworks()
{
List<Networks> all_networks = APICaller.GetNetworkList();
foreach(var network_from_api in all_networks)
{
var network_in_database = db.it_asset_meraki_networks.FirstOrDefault(
n => n.network_id == network_from_api.network_id);
if (network_in_database == null)
db.it_asset_meraki_networks.Add(network_in_meraki);
else
CheckAndSyncNetworkFields(network_from_api, network_in_database);
}
db.SaveChanges();
}
private void CheckAndSyncNetworkFields(Networks network_from_api, Networks network_in_database)
{
if(network_in_database.name != network_from_api.name
|| network_in_database.organizationID != network_from_api.organizationID
|| network_in_database.type != network_from_api.type
|| network_in_database.tags != network_from_api.tags
|| network_in_database.time_zone != network_from_api.time_zone)
{
network_in_database.name = network_from_api.name;
network_in_database.organizationID = network_from_api.organizationID;
network_in_database.type = network_from_api.type;
network_in_database.tags = network_from_api.tags;
network_in_database.time_zone = network_from_api.time_zone;
}
}
¿Hay una manera más eficiente de hacer esto? ¿Podría de alguna manera usar las funciones IsModfied o Attach?