Typ in einer using-Anweisung werden muss implicity Cabrio zu system.Idisposable

Begann ein neues mvc4-Projekt. Verwendet das MVC-controller-Vorlage zum erstellen der lese - /schreib-Aktionen der 'Orders' Modell. Hinzugefügt eine neue Entity framework-Verbindung zu meiner db und bin versucht, zu aktualisieren, es mit einer neuen Bestellung.

[HttpPost]
    public ActionResult Create(Orders orders)
    {
        try
        {

            //type used in a using statement must be implicity convertible to system.Idisposable
            using (BuyABicycleEntities db = new BuyABicycleEntities())
            {
                Order NewOrder = new Order();
                NewOrder.BicycleColour = orders.BicycleColour;
                NewOrder.BicycleModel = orders.BicycleModel;
                NewOrder.BicycleSize = orders.BicycleSize;
                NewOrder.CustomerAddress = orders.CustomerAddress;
                NewOrder.CustomerEmail = orders.CustomerEmail;
                NewOrder.CustomerName = orders.CustomerName;
                NewOrder.CustomerPhoneNumber = orders.CustomerPhoneNumber;

                //entiry framework new item
                //db.Orders.(NewOrder);
                db.SaveChanges();

            }

            return View(orders);
        }
        catch (Exception ex)
        {
            //Show Message("Error in Orders - " + ex.Message);

        }
    }

jedoch die using-Anweisung Kennzeichnen einen Fehler:

Typs in einer Anweisung verwenden, müssen implicity Cabrio zu
system.Idisposable

Also ich habe die Umsetzung einer idisposable?, muss ich diese jedesmal, wenn ich aktualisieren möchten der db? Durchsucht stackoverflow eine Menge von ähnlichen Q ist aber noch nicht sicher, wie Sie zu entsorgen, von mir? bitte beraten. Dank

    //------------------------------------------------------------------------------
//DO NOT MODIFY THIS CLASS - AutoGenerated Code
//   Any changes made to this code will be lost the next time this 
//   code is regenerated.
//
//   Generated at: 05/08/2014 14:16:31
//   DevForce version: 6.1.7.0
//   Template version: 2.1.4
//------------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.Serialization;
using IbEm   = IdeaBlade.EntityModel;
using IbCore = IdeaBlade.Core;
using IbVal  = IdeaBlade.Validation;

[module: IbCore.IdeaBladeLicense("5w+U/Qneh0KYrGDaCOhKKqJpzM0BhW5i7ky77IZpGawLem2DQ5JuP6W8fhhcpF/x")]

namespace MvcApplication18 { 

  #region BuyABicycleEntities

  ///<summary>
  ///The domain-specific EntityManager for your domain model.
  ///</summary>
  public partial class BuyABicycleEntities : IbEm.EntityManager {

    #region Constructors

    ///<summary>See <see cref="M:IbEm.EntityManager.#ctor(bool, string, IbEm.EntityServiceOption, string)"/>. </summary>
    public BuyABicycleEntities(bool shouldConnect=true, string dataSourceExtension=null, IbEm.EntityServiceOption entityServiceOption=IbEm.EntityServiceOption.UseDefaultService, string compositionContextName=null) : base(shouldConnect, dataSourceExtension, entityServiceOption, compositionContextName) {}

    ///<summary>See <see cref="M:IbEm.EntityManager.#ctor(IbEm.EntityManagerContext)"/>. </summary>
    public BuyABicycleEntities(IbEm.EntityManagerContext entityManagerContext) : base(entityManagerContext) {}

    ///<summary>See <see cref="M:IbEm.EntityManager.#ctor(IbEm.EntityManager, bool, string, IbEm.EntityServiceOption, string)"/>. </summary>
    public BuyABicycleEntities(IbEm.EntityManager entityManager, bool shouldConnect, string dataSourceExtension=null, IbEm.EntityServiceOption entityServiceOption=IbEm.EntityServiceOption.UseDefaultService, string compositionContextName=null) : base(entityManager, shouldConnect, dataSourceExtension, entityServiceOption, compositionContextName) {}

    ///<summary>See <see cref="M:IbEm.EntityManager.#ctor(IbEm.EntityManager, IbEm.EntityManagerContext)"/>. </summary>
    public BuyABicycleEntities(IbEm.EntityManager entityManager, IbEm.EntityManagerContext entityManagerContext=null) : base(entityManager, entityManagerContext) {}

    static BuyABicycleEntities() {
      IbEm.EntityRelation.InitializeEntityRelations(System.Reflection.Assembly.GetExecutingAssembly());
    }
    #endregion Constructors

    #region EntityQueries

    ///<summary>Gets the <see cref="T:IbEm.EntityQuery"/> associated with the given EntitySet name. </summary>
    public IbEm.EntityQuery<BicycleModel> BicycleModels {
      get { return new IbEm.EntityQuery<BicycleModel>("BicycleModels", this); }
    }

    ///<summary>Gets the <see cref="T:IbEm.EntityQuery"/> associated with the given EntitySet name. </summary>
    public IbEm.EntityQuery<Customer> Customers {
      get { return new IbEm.EntityQuery<Customer>("Customers", this); }
    }

    ///<summary>Gets the <see cref="T:IbEm.EntityQuery"/> associated with the given EntitySet name. </summary>
    public IbEm.EntityQuery<Order> Orders {
      get { return new IbEm.EntityQuery<Order>("Orders", this); }
    }
    #endregion EntityQueries
  }
  #endregion BuyABicycleEntities

  #region BicycleModel class

  ///<summary>The auto-generated BicycleModel class. </summary>
  [DataContract(IsReference=true)]
  [IbEm.DataSourceKeyName(@"BuyABicycleEntities")]
  [IbEm.DefaultEntitySetName(@"BuyABicycleEntities.BicycleModels")]
  public partial class BicycleModel : IbEm.Entity {

    ///<summary>Returns the property path for the given expression. </summary>
    ///<example>
    ///Usage:
    ///<code>
    ///   var r = Employee.PathFor(e => e.Manager.City); //returns "Manager.City"
    ///</code>
    ///</example>
    public static string PathFor(System.Linq.Expressions.Expression<System.Func<BicycleModel, object>> expr) {
      return IbCore.PropertyPath.For<BicycleModel>(expr);
    }

    #region Data Properties

    ///<summary>Gets or sets the Id. </summary>
    [Key]
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="Id", AutoGenerateField=true)]
    [IbVal.RequiredValueVerifier( ErrorMessageResourceName="BicycleModel_Id")]
    public int Id {
      get { return PropertyMetadata.Id.GetValue(this); }
      set { PropertyMetadata.Id.SetValue(this, value); }
    }

    ///<summary>Gets or sets the ModelName. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="ModelName", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="BicycleModel_ModelName")]
    public string ModelName {
      get { return PropertyMetadata.ModelName.GetValue(this); }
      set { PropertyMetadata.ModelName.SetValue(this, value); }
    }
    #endregion Data Properties

    #region Navigation properties
    #endregion Navigation properties

    #region EntityProperty definitions
    public partial class PropertyMetadata {

      ///Explicit static constructor ensures static fields are initialized.
      static PropertyMetadata() {}

      ///<summary>The Id <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<BicycleModel, int> Id = new IbEm.DataEntityProperty<BicycleModel, int>("Id", false, true, IbEm.ConcurrencyStrategy.None, true, null);

      ///<summary>The ModelName <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<BicycleModel, string> ModelName = new IbEm.DataEntityProperty<BicycleModel, string>("ModelName", false, false, IbEm.ConcurrencyStrategy.None, false, null);
    }
    #endregion EntityProperty definitions

    #region EntityPropertyNames
    public new partial class EntityPropertyNames : IbEm.Entity.EntityPropertyNames {
      public const String Id = "Id";
      public const String ModelName = "ModelName";
    }
    #endregion EntityPropertyNames
  }
  #endregion BicycleModel class

  #region Customer class

  ///<summary>The auto-generated Customer class. </summary>
  [DataContract(IsReference=true)]
  [IbEm.DataSourceKeyName(@"BuyABicycleEntities")]
  [IbEm.DefaultEntitySetName(@"BuyABicycleEntities.Customers")]
  public partial class Customer : IbEm.Entity {

    ///<summary>Returns the property path for the given expression. </summary>
    ///<example>
    ///Usage:
    ///<code>
    ///   var r = Employee.PathFor(e => e.Manager.City); //returns "Manager.City"
    ///</code>
    ///</example>
    public static string PathFor(System.Linq.Expressions.Expression<System.Func<Customer, object>> expr) {
      return IbCore.PropertyPath.For<Customer>(expr);
    }

    #region Data Properties

    ///<summary>Gets or sets the Id. </summary>
    [Key]
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="Id", AutoGenerateField=true)]
    [IbVal.RequiredValueVerifier( ErrorMessageResourceName="Customer_Id")]
    public int Id {
      get { return PropertyMetadata.Id.GetValue(this); }
      set { PropertyMetadata.Id.SetValue(this, value); }
    }

    ///<summary>Gets or sets the CustomerName. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="CustomerName", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Customer_CustomerName")]
    public string CustomerName {
      get { return PropertyMetadata.CustomerName.GetValue(this); }
      set { PropertyMetadata.CustomerName.SetValue(this, value); }
    }
    #endregion Data Properties

    #region Navigation properties
    #endregion Navigation properties

    #region EntityProperty definitions
    public partial class PropertyMetadata {

      ///Explicit static constructor ensures static fields are initialized.
      static PropertyMetadata() {}

      ///<summary>The Id <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Customer, int> Id = new IbEm.DataEntityProperty<Customer, int>("Id", false, true, IbEm.ConcurrencyStrategy.None, true, null);

      ///<summary>The CustomerName <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Customer, string> CustomerName = new IbEm.DataEntityProperty<Customer, string>("CustomerName", false, false, IbEm.ConcurrencyStrategy.None, false, null);
    }
    #endregion EntityProperty definitions

    #region EntityPropertyNames
    public new partial class EntityPropertyNames : IbEm.Entity.EntityPropertyNames {
      public const String Id = "Id";
      public const String CustomerName = "CustomerName";
    }
    #endregion EntityPropertyNames
  }
  #endregion Customer class

  #region Order class

  ///<summary>The auto-generated Order class. </summary>
  [DataContract(IsReference=true)]
  [IbEm.DataSourceKeyName(@"BuyABicycleEntities")]
  [IbEm.DefaultEntitySetName(@"BuyABicycleEntities.Orders")]
  public partial class Order : IbEm.Entity {

    ///<summary>Returns the property path for the given expression. </summary>
    ///<example>
    ///Usage:
    ///<code>
    ///   var r = Employee.PathFor(e => e.Manager.City); //returns "Manager.City"
    ///</code>
    ///</example>
    public static string PathFor(System.Linq.Expressions.Expression<System.Func<Order, object>> expr) {
      return IbCore.PropertyPath.For<Order>(expr);
    }

    #region Data Properties

    ///<summary>Gets or sets the Id. </summary>
    [Key]
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="Id", AutoGenerateField=true)]
    [IbVal.RequiredValueVerifier( ErrorMessageResourceName="Order_Id")]
    public int Id {
      get { return PropertyMetadata.Id.GetValue(this); }
      set { PropertyMetadata.Id.SetValue(this, value); }
    }

    ///<summary>Gets or sets the CustomerName. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="CustomerName", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_CustomerName")]
    public string CustomerName {
      get { return PropertyMetadata.CustomerName.GetValue(this); }
      set { PropertyMetadata.CustomerName.SetValue(this, value); }
    }

    ///<summary>Gets or sets the CustomerAddress. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="CustomerAddress", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_CustomerAddress")]
    public string CustomerAddress {
      get { return PropertyMetadata.CustomerAddress.GetValue(this); }
      set { PropertyMetadata.CustomerAddress.SetValue(this, value); }
    }

    ///<summary>Gets or sets the CustomerPhoneNumber. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="CustomerPhoneNumber", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_CustomerPhoneNumber")]
    public string CustomerPhoneNumber {
      get { return PropertyMetadata.CustomerPhoneNumber.GetValue(this); }
      set { PropertyMetadata.CustomerPhoneNumber.SetValue(this, value); }
    }

    ///<summary>Gets or sets the CustomerEmail. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="CustomerEmail", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_CustomerEmail")]
    public string CustomerEmail {
      get { return PropertyMetadata.CustomerEmail.GetValue(this); }
      set { PropertyMetadata.CustomerEmail.SetValue(this, value); }
    }

    ///<summary>Gets or sets the BicycleModel. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="BicycleModel", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_BicycleModel")]
    public string BicycleModel {
      get { return PropertyMetadata.BicycleModel.GetValue(this); }
      set { PropertyMetadata.BicycleModel.SetValue(this, value); }
    }

    ///<summary>Gets or sets the BicycleSize. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="BicycleSize", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_BicycleSize")]
    public string BicycleSize {
      get { return PropertyMetadata.BicycleSize.GetValue(this); }
      set { PropertyMetadata.BicycleSize.SetValue(this, value); }
    }

    ///<summary>Gets or sets the BicycleColour. </summary>
    [DataMember]
    [Bindable(true, BindingDirection.TwoWay)]
    [Editable(true)]
    [Display(Name="BicycleColour", AutoGenerateField=true)]
    [IbVal.StringLengthVerifier(MaxValue=50, IsRequired=true, ErrorMessageResourceName="Order_BicycleColour")]
    public string BicycleColour {
      get { return PropertyMetadata.BicycleColour.GetValue(this); }
      set { PropertyMetadata.BicycleColour.SetValue(this, value); }
    }
    #endregion Data Properties

    #region Navigation properties
    #endregion Navigation properties

    #region EntityProperty definitions
    public partial class PropertyMetadata {

      ///Explicit static constructor ensures static fields are initialized.
      static PropertyMetadata() {}

      ///<summary>The Id <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, int> Id = new IbEm.DataEntityProperty<Order, int>("Id", false, true, IbEm.ConcurrencyStrategy.None, true, null);

      ///<summary>The CustomerName <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> CustomerName = new IbEm.DataEntityProperty<Order, string>("CustomerName", false, false, IbEm.ConcurrencyStrategy.None, false, null);

      ///<summary>The CustomerAddress <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> CustomerAddress = new IbEm.DataEntityProperty<Order, string>("CustomerAddress", false, false, IbEm.ConcurrencyStrategy.None, false, null);

      ///<summary>The CustomerPhoneNumber <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> CustomerPhoneNumber = new IbEm.DataEntityProperty<Order, string>("CustomerPhoneNumber", false, false, IbEm.ConcurrencyStrategy.None, false, null);

      ///<summary>The CustomerEmail <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> CustomerEmail = new IbEm.DataEntityProperty<Order, string>("CustomerEmail", false, false, IbEm.ConcurrencyStrategy.None, false, null);

      ///<summary>The BicycleModel <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> BicycleModel = new IbEm.DataEntityProperty<Order, string>("BicycleModel", false, false, IbEm.ConcurrencyStrategy.None, false, null);

      ///<summary>The BicycleSize <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> BicycleSize = new IbEm.DataEntityProperty<Order, string>("BicycleSize", false, false, IbEm.ConcurrencyStrategy.None, false, null);

      ///<summary>The BicycleColour <see cref="T:IbEm.DataEntityProperty"/>. </summary>
      public static readonly IbEm.DataEntityProperty<Order, string> BicycleColour = new IbEm.DataEntityProperty<Order, string>("BicycleColour", false, false, IbEm.ConcurrencyStrategy.None, false, null);
    }
    #endregion EntityProperty definitions

    #region EntityPropertyNames
    public new partial class EntityPropertyNames : IbEm.Entity.EntityPropertyNames {
      public const String Id = "Id";
      public const String CustomerName = "CustomerName";
      public const String CustomerAddress = "CustomerAddress";
      public const String CustomerPhoneNumber = "CustomerPhoneNumber";
      public const String CustomerEmail = "CustomerEmail";
      public const String BicycleModel = "BicycleModel";
      public const String BicycleSize = "BicycleSize";
      public const String BicycleColour = "BicycleColour";
    }
    #endregion EntityPropertyNames
  }
  #endregion Order class

  #region EntityRelations

  ///<summary>
  ///A generated class that returns the relations between entities in this model.
  ///</summary>
  [IbCore.IdeaBladeGuid("ada4f853-5b03-423a-a51f-0da38018c087", "2.1.4")]
  public partial class EntityRelations : IbEm.IEntityRelations {

    ///Explicit static constructor ensures static fields are initialized.
    static EntityRelations() {}
  }
  #endregion EntityRelations
}
  • Ist BuyABicycleEntities der Typ DbContext ?
  • Wenn Sie verwenden wollen ein using Aussage, ja, Sie brauchen, um zu implementieren IDisposable für BuyABicycleEntities. (beachten Sie, dass Sie nicht haben, um dies zu tun, per se, aber es ist eine gute Idee)
  • Nicht 100% ich habe es aus der Vorlage für das hinzufügen eines entity data model-Assistenten. wie kann ich das überprüfen?
  • es ist nur eine gute Idee, wenn es etwas passendes zu tun, während Dispose(). Wenn es nicht schon implementiert, ich vermute: es ist wahrscheinlich nicht nötig
  • ok, danke tim. naja ich bin mir nicht sicher, wie Sie dies tun, könnten Sie bitte beraten?
  • Konnte Sie nach dem Basis-Klassen/interfaces geerbt/umgesetzt von BuyABicycleEntities?
  • Meinst du die cs-Seite für die edmx?
  • Was IdeaBlade und DevForce sind, scheinen Sie sich zu verstecken die Umsetzung der IDisposable irgendwo die Vererbungskette. Scheint ein wenig lückenhaft zu mir, aber in diesem Fall würden Sie nicht brauchen eine using - Anweisung.
  • I dont think so, ich habe eine neue asp.net mvc4 Webanwendung. Und verwendet der Assistent zum erstellen einer neuen Entity framework-Verbindung zu meiner db (BuyABicycleEntities)
  • hmm vielleicht sollte ich Sie erarbeitet haben. ich dachte, Sie würde nicht gehen in der Nähe von IDisposable-es sei denn, es gab einen Grund dafür. Alles was ich sagen wollte ist, dass es zwar technisch möglich ist, zu "entsorgen", Dinge, ohne IDisposable, sollten Sie wahrscheinlich nicht.

InformationsquelleAutor Mick | 2014-08-05
Schreibe einen Kommentar