Erreur à l'aide de l'Aide de
J'ai une erreur
Type utilisé dans une instruction d'utilisation doit être implicitement convertible Système.IDisposable'
sur la ligne
using (var context = new EntityContainer())
Voici mon code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Globalization;
using System.Data;
using System.Data.Entity;
using school.usi.susibar.model;
namespace school.usi.susibar.test
{
class Program
{
public static void Main(string []args)
{
using (var context = new EntityContainer())
{
addOrderStatusType(context);
Console.ReadLine();
}
}
private static void addOrderStatusType(EntityContainer context)
{
try
{
OrderStatusType type = new OrderStatusType
{
Name = "Vyrizeno",
CancelPermission = false,
ChangePermission = false
};
context.OrderStatusTypes.Add(type);
context.SaveChanges();
Console.WriteLine("Pridano");
}
catch (Exception ex) {
Console.WriteLine(ex.InnerException);
}
}
}
}
La EntityContainer() ressemble à ceci...
//------------------------------------------------------------------------------
//<auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
//</auto-generated>
//------------------------------------------------------------------------------
namespace school.usi.susibar.model
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class EntityContainer : DbContext
{
public EntityContainer()
: base("name=EntityContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Role> Roles { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Table> Tables { get; set; }
public DbSet<OrderStatusType> OrderStatusTypes { get; set; }
public DbSet<Person> Persones { get; set; }
public DbSet<Item> Items { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<Stock> Stocks { get; set; }
public DbSet<ItemOrderList> ItemOrderLists { get; set; }
public DbSet<ItemOrderStatus> ItemOrderStatuses { get; set; }
public DbSet<PaymentOrderStatus> PaymentOrderStatuses { get; set; }
public DbSet<Prepaid> Prepaids { get; set; }
}
}
EDIT: DbContext implémente IDisposable et je ne peux pas modifier EntityContainer() de la classe depuis sa généré à partir d'un modèle.
Toutes les idées de ce qui est mal?
Regardez ceci: stackoverflow.com/questions/12508031/...
OriginalL'auteur user1851379 | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
De cette réponse:
A fonctionné pour moi, merci!
Merci!!!! Ainsi que de la référence à EntityFramework j'ai également nécessaire d'ajouter une référence à System.Les données.Entité et puis mon "aide" d'erreur a disparu. 🙂
C'est la vraie réponse à cette question. Il fonctionne pour moi aussi!
À peine installé EF6 de Gestionnaire de Package NuGet résolu le problème.
OriginalL'auteur Don Kirkby
La réponse serait d'ajouter le EntityFramework de l'assemblée pour les références
OriginalL'auteur Rami Sarieddine
Si vous souhaitez utiliser
EntityContainer
dans unusing
déclaration, alors il doit mettre en œuvre IDisposableEssayez ceci:
Pour une raison quelconque vous avez besoin pour mettre en œuvre
IDisposable
dans la sous-classe. Essayer le code que j'ai ajouté à ma réponseJe ne peux pas ajouter , IDisposable depuis la classe EntityContainer est généré automatiquement et je ne peux pas le modifier 🙁
Vous ne devriez pas besoin d'ajouter IDisposable à une sous-classe si elle est définie sur une base de classe. Le problème, ici, est plus susceptible de faire avec le référencement des versions incompatibles de EF. Voir stackoverflow.com/questions/12508031/...
Cela ne peut pas être bonne réponse, parce que
DbContext
implémente déjàIDisposable
OriginalL'auteur Rui Jarimba
J'ai ajouté entity framework pour ma vocation du projet références et il a fixé mon problème.
OriginalL'auteur Demodave
Vous pouvez essayer d'utiliser le motif d'Unité de Travail, quelque chose comme ça.
Alors votre partielle ObjectContext pour mettre en œuvre le
IUnitOfWork
interface:Cette méthode me permet d'utiliser l'aide de la directive sans erreurs. Exemple d'utilisation (j'utilise le modèle de Référentiel en conjonction avec le présent):
J'espère que cela aide.
OriginalL'auteur Brandon Ward
Nous avons une page qui génère cette erreur et la
does not contain a definition for SaveChanges
erreur. Les entités sont définies dans un projet distinct, et toutes les références nécessaires semblent être utilisés.J'ai trouvé que le passage à partir de Visual Studio 2012 pour 2010 est suffisante lors de l'édition de la page. Ce n'est certainement pas idéal, mais il fonctionne jusqu'à nous changer de tout au cours de l'EF 5+.
OriginalL'auteur James Skemp
Si vous suivez l'exemple dans le Chapitre 23 des "Pro C# 5.0 et le .Net 4.5 Cadre" à l'aide de Visual Studio 2013 puis il suffit d'ajouter les autres Dll dans le AutoLotDAL dossier comme références.
OriginalL'auteur 2old4this