Ho una soluzione costituita da 2 progetti. Un progetto UI ( Application Windows Form e un progretto Class Library DATA.
Nome.Data
Nome.UI
Nel progetto "Data" volevo gestire tramite EF6 Code First l'accesso ai dati, nel progetto UI l'interfaccia Windows Form.
Non ho nessun problema nel progetto Data, ma quando cerco di instanziare dal progetto UI il mio DbContext ( dopo avere aggiunto il riferimento alla class library) mi viene segnalato un errore del riferimento mancante "System.Data.Entity.DbContext" !!. Ma nel progetto UI non devo aggiungere il riferimento
Progetto "Imballo.Data"
DBImballoContext.cs
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using SGVImballo.Data.Models.Mapping;
namespace SGVImballo.Data.Models
{
public partial class DBImballoContext : DbContext
{
static DBImballoContext()
{
Database.SetInitializer<DBImballoContext>(null);
}
public DBImballoContext()
: base("Name=DBImballoContext")
{
}
public DbSet<Datalog> Datalogs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new DatalogMap());
}
}
}
Datalog.cs
using System;
using System.Collections.Generic;
namespace SGVImballo.Data.Models
{
public partial class Datalog
{
public int ID_Datalog { get; set; }
public System.DateTime data_inizio { get; set; }
public string codice_operatore { get; set; }
public string codice_impianto { get; set; }
public string dataMatrix { get; set; }
public string udc { get; set; }
public string note { get; set; }
}
}
DatalogMap.cs
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
namespace SGVImballo.Data.Models.Mapping
{
public class DatalogMap : EntityTypeConfiguration<Datalog>
{
public DatalogMap()
{
// Primary Key
this.HasKey(t => t.ID_Datalog);
// Properties
this.Property(t => t.codice_operatore)
.IsRequired()
.HasMaxLength(20);
this.Property(t => t.codice_impianto)
.IsRequired()
.HasMaxLength(20);
this.Property(t => t.dataMatrix)
.IsRequired()
.HasMaxLength(25);
this.Property(t => t.udc)
.HasMaxLength(20);
this.Property(t => t.note)
.HasMaxLength(50);
// Table & Column Mappings
this.ToTable("Datalog");
this.Property(t => t.ID_Datalog).HasColumnName("ID_Datalog");
this.Property(t => t.data_inizio).HasColumnName("data_inizio");
this.Property(t => t.codice_operatore).HasColumnName("codice_operatore");
this.Property(t => t.codice_impianto).HasColumnName("codice_impianto");
this.Property(t => t.dataMatrix).HasColumnName("dataMatrix");
this.Property(t => t.udc).HasColumnName("udc");
this.Property(t => t.note).HasColumnName("note");
}
}
}
Progetto Imballo.UI
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SGVImballo.Data.Models;
namespace SGVImballo.UI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private DBImballoContext _context;
private void button1_Click(object sender, EventArgs e)
{
}
}
}
Errore1Il tipo 'System.Data.Entity.DbContext' è definito in un assembly di cui manca il riferimento. Aggiungere un riferimento all'assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.C:\Visual Studio 2013\Projects\SGVImballo\SGVImballo.UI\Form1.cs2134SGVImballo.UI