J'ai une petite question j'utilise Entity Framework en .Net Core 3.1 avec SQLite et j'ai un petit problème au niveau des relations (One To One). Je souhaite que ma table MirrorDatabase soit lié a ma table MirrorServer (Afin que quand j'appelle un élément de MirrorDatabase je puisse accéder au information du MirrorServer qui lui ai définit). Mais si je suis ici c'est que ca ne fonctionne pas J'ai jamais utilisé EF ou SQLite... Je pense avoir bien fait voici les "codes"
Models:
namespace CeicomPacketTransfert.App_Data.Models
{
public class CPTContext : DbContext
{
public DbSet<MirrorServer> MirrorServer { get; set; }
public DbSet<MirrorDatabase> MirrorDatabase { get; set; }
public DbSet<PacketRepo> PacketRepo { get; set; }
public string DbPath { get; }
public CPTContext()
{
var folder = Environment.SpecialFolder.LocalApplicationData;
var path = Environment.GetFolderPath(folder);
DbPath = System.IO.Path.Join(path, "Database.db");
}
// The following configures EF to create a Sqlite database file in the
// special "local" folder for your platform.
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlite($"Data Source={DbPath}");
}
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlite().AddDbContext<CPTContext>();
}
}
[Table("MirrorServer")]
public class MirrorServer
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ServerId { get; set; }
[Required]
public string ServerName { get; set; }
[Required]
public string ServerIp { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.Now;
public DateTime UpdatedAt { get; set; } = DateTime.Now;
}
[Table("MirrorDatabase")]
public class MirrorDatabase
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DatabaseId { get; set; }
[Required]
public string DatabaseName { get; set; }
[Required]
public string DatabaseFolderName { get; set; }
[Required]
[ForeignKey("ServerId")]
public virtual MirrorServer MirrorServer { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.Now;
public DateTime UpdatedAt { get; set; } = DateTime.Now;
}
[Table("PacketRepo")]
public class PacketRepo
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PacketId { get; set; }
[Required]
public string PacketDatabaseName { get; set; }
[ForeignKey("DatabaseId")]
public virtual MirrorDatabase MirrorDatabase { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.Now;
public DateTime UpdatedAt { get; set; } = DateTime.Now;
}
}
Et ensuite pour inserer dans la table:
var mirrorSrv = Database.MirrorServer.SingleOrDefault(x => x.ServerName == serverMirror);
var newMirror = new MirrorDatabase { DatabaseName = databaseName, DatabaseFolderName = databaseFolderName, MirrorServer = mirrorSrv };
La variable mirrorSRV contiens bien le serveur, pourtant quand je fait la demande ci-dessous, j'ai une valeur a null...
var mirroDB = Database.MirrorDatabase.SingleOrDefault(x => x.DatabaseName == databaseName);
Et dans le logiciel DB Browser For SQLite:
- Edité par Eternia 25 mai 2022 à 17:33:21
[C# .NET Core 3.1] Problème EF + SQLite
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.