MusicStore " - System.Daten.Objekte.ObjectSet<...>' enthält keine definition für 'Hinzufügen', und keine Erweiterung Methode 'Add' die Annahme einer ersten Auseinandersetzung
Habe ich nach dem MusicStore-tutorial bin ich schon auf die Teil 8 der tutorial. Ich bekam diese Fehlermeldung, wenn ich versuchte, fügen Sie die Warenkorb-Klasse.. ich habe versucht zu google für eine mögliche Lösung, aber nicht sauber T_T .. aufgrund meiner Forschung bin ich immer diese Fehlermeldung, denn ich bin mit edmx die Datenbank zuerst anstelle der erste code auf der Anleitung.
Hatte ich diese codes Hinzugefügt und ein Fehler auf, Add() und Remove()
namespace Project.Models
{
public partial class ShoppingCart
{
ProjectEntities db = new ProjectEntities();
string ShoppingCartId { get; set; }
public const string CartSessionKey = "cart_ID";
public static ShoppingCart GetCart(HttpContextBase context)
{
var cart = new ShoppingCart();
cart.ShoppingCartId = cart.GetCartId(context);
return cart;
}
//Helper method to simplify shopping cart calls
public static ShoppingCart GetCart(Controller controller)
{
return GetCart(controller.HttpContext);
}
public void AddToCart(Product product)
{
//Get the matching cart and album instances
var cartItem = db.Carts.SingleOrDefault(c => c.cart_ID == ShoppingCartId && c.product_ID == product.product_ID);
if (cartItem == null)
{
//Create a new cart item if no cart item exists
cartItem = new Cart
{
product_ID = product.product_ID,
cart_ID = ShoppingCartId,
Count = 1,
DateCreated = DateTime.Now
};
db.Carts.Add(cartItem);
}
else
{
//If the item does exist in the cart, then add one to the quantity
cartItem.Count++;
}
//Save changes
db.SaveChanges();
}
public int RemoveFromCart(int id)
{
//Get the cart
var cartItem = db.Carts.Single(cart => cart.cart_ID == ShoppingCartId && cart.record_ID == id);
int itemCount = 0;
if (cartItem != null)
{
if (cartItem.Count > 1)
{
cartItem.Count--;
itemCount = cartItem.Count;
}
else
{
db.Carts.Remove(cartItem);
}
//Save changes
db.SaveChanges();
}
return itemCount;
}
public void EmptyCart()
{
var cartItems = db.Carts.Where(cart => cart.cart_ID == ShoppingCartId);
foreach (var cartItem in cartItems)
{
db.Carts.Remove(cartItem);
}
//Save changes
db.SaveChanges();
}
public List<Cart> GetCartItems()
{
return db.Carts.Where(cart => cart.cart_ID == ShoppingCartId).ToList();
}
public int GetCount()
{
//Get the count of each item in the cart and sum them up
int? count = (from cartItems in db.Carts
where cartItems.cart_ID == ShoppingCartId
select (int?)cartItems.Count).Sum();
//Return 0 if all entries are null
return count ?? 0;
}
public decimal GetTotal()
{
//Multiply album price by count of that album to get
//the current price for each of those albums in the cart
//sum all album price totals to get the cart total
decimal? total = (from cartItems in db.Carts
where cartItems.cart_ID == ShoppingCartId
select (int?)cartItems.Count * cartItems.Product.Price).Sum();
return total ?? decimal.Zero;
}
public int CreateOrder(Order order)
{
decimal orderTotal = 0;
var cartItems = GetCartItems();
//Iterate over the items in the cart, adding the order details for each
foreach (var item in cartItems)
{
var orderDetail = new OrderDetail
{
product_ID = item.product_ID,
order_ID = order.order_ID,
UnitPrice = item.Product.Price,
Quantity = item.Count
};
//Set the order total of the shopping cart
orderTotal += (item.Count * item.Product.Price);
db.OrderDetails.Add(orderDetail);
}
//Set the order's total to the orderTotal count
order.Total = orderTotal;
//Save the order
db.SaveChanges();
//Empty the shopping cart
EmptyCart();
//Return the OrderId as the confirmation number
return order.order_ID;
}
//We're using HttpContextBase to allow access to cookies.
public string GetCartId(HttpContextBase context)
{
if (context.Session[CartSessionKey] == null)
{
if (!string.IsNullOrWhiteSpace(context.User.Identity.Name))
{
context.Session[CartSessionKey] = context.User.Identity.Name;
}
else
{
//Generate a new random GUID using System.Guid class
Guid tempCartId = Guid.NewGuid();
//Send tempCartId back to client as a cookie
context.Session[CartSessionKey] = tempCartId.ToString();
}
}
return context.Session[CartSessionKey].ToString();
}
//When a user has logged in, migrate their shopping cart to
//be associated with their username
public void MigrateCart(string userName)
{
var shoppingCart = db.Carts.Where(c => c.cart_ID == ShoppingCartId);
foreach (Cart item in shoppingCart)
{
item.cart_ID = userName;
}
db.SaveChanges();
}
}
}
Ich bin ein starter in MVC und hoffentlich könnte jemand mir helfen, diese zu lösen.
- Bitte setzen Sie den code der
ProjectEntities
Klasse. - Tut mir Leid, ich mache es in erste Datenbank, so dass ich nur noch die .emdx-Datei auf meine Model-Mappe, die zeigt die Beziehung der Tabellen. Unter meine .edmx-Datei-Projekt.Designer.cs
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, hier ist was ich Tat, Jungs, damit es funktioniert.. anstatt .Add (), die ich benutze .AddObject() und anstatt .Entfernen ich .DeleteObject().. I dont know der Grund hinter, wie diese Dinge funktionieren, aber atleast Sie es nicht zeigt Fehlermeldung mehr.. 😛 danke für alle die mir geholfen haben.. 🙂
Hinzufügen und entfernen von sind EntityFrame namespace System.Daten.Entity
also meine Vermutung ist, mit System.Daten.Entity fehlt ?
Überprüfen Sie auch Referenz-EntityFramework.dll Hinzugefügt im Projekt ?
Oder verwenden Sie den Paket-manager (nuget) zu EF Hinzugefügt im Projekt?,
Hat Ihr Kontext ableiten von DBContext ? Wenn nicht hinzufügen.
Wenn Sie sehen, AddObject, sind Sie wahrscheinlich, die sich aus ObjectContext statt
Versuchen. Es wird entfernen Sie Ihre Fehler und funktioniert gut .
Anstatt
DeleteObject
Methode versuchen, diese