I am working on vs 2010 and EF 4.1 with SQL server database. Below mentioned code works fine with local SQL server DB.(SQL 2008).
But when I published the MVC application for windows AZURE cloud and SQL Azure it's giving below mentioned error.
My repository code sample as below.Below mentioned error comes when calling Catalog.SaveChanges() method.
using (var catalog = new DataCatalog()) { var retailSaleReturn = new RetailSaleReturn { ReturnQuantity = returnQuantity, Product = saleDetailObj.Product, Owner = owner, Provider = provider, }; //add to context Catalog.RetailSaleReturns.Add(retailSaleReturn); //save for db Catalog.SaveChanges(); }
DbUpdateException is Like below :
{"An error occurred while saving entities that do not expose foreign key properties for their relationships. The EntityEntries property will return null because a single entity cannot be identified as the source of the exception. Handling of exceptions while saving can be made easier by exposing foreign key properties in your entity types. See the InnerException for details."}
InnerException is Like below :
{"Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again."}
StackTrace is Like below
at System.Data.Entity.Internal.InternalContext.SaveChanges() at PawLoyalty.Data.Repositories.CustomersRepository.ReturnRetailOnlySales(Guid saleDetailId, Int32 returnQuantity, String providerKey, String ownerKey) in D:\PawLoyalty Module\PawLoyalty\PawLoyalty\PawLoyalty.Data\Repositories\CustomersRepository.cs:line 550 at PawLoyalty.Web.Areas.Providers.Controllers.CustomersController.ReturnRetailOnlySales(String providerKey, String ownerKey, String petKey, Guid saleDetailId, Int32 returnQuantity) in D:\PawLoyalty Module\PawLoyalty\PawLoyalty\PawLoyalty.Web\Areas\Providers\Controllers\CustomersController.cs:line 942 at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
A heap is a table without a clustered index. One or more nonclustered indexes can be created on tables stored as a heap. Data is stored in the heap without specifying an order.
Generally, nonclustered indexes are created to improve the performance of frequently used queries not covered by the clustered index or to locate rows in a table without a clustered index (called a heap). You can create multiple nonclustered indexes on a table or indexed view.
Yes, every table should have a clustered index. The clustered index sets the physical order of data in a table. You can compare this to the ordering of music at a store, by bands name and or Yellow pages ordered by a last name.
Non-clustered: Non-Clustered index is an index structure separate from the data stored in a table that reorders one or more selected columns. The non-clustered index is created to improve the performance of frequently used queries not covered by a clustered index.
You need to create a clustered index on all tables in SQL Azure that you wish to add rows to; otherwise the insert statement always fails.
CREATE UNIQUE CLUSTERED INDEX Idx_TableName ON TableName(yourGUIDColumn);
Here is a reference to the general guidelines and limitations specifically regarding these indexes: MSDN Link
Here is another article which explains the reasoning behind this: link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With