私はvs2010およびEF4.1 with SQLサーバーデータベースに取り組んでいます。以下のコードは、ローカルSQLサーバーDB(SQL 2008)で正常に機能します。
しかし、windows Azure cloudおよびSQL AzureのMVCアプリケーションを公開したとき、下記のエラーが表示されます。
私のリポジトリコードサンプル以下のとおり。Catalog.SaveChanges()メソッドを呼び出すと、以下のエラーが発生します。
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は以下のようになります:
{"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は以下のようになります:
{"Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again."}
StackTraceは以下のようになります
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)
V12にアップグレードする方が簡単だと思いました。
私はバックアップし(私はそのように賢いです!)、次にすべてのDBを(古いコンソールmanage.windowszaure.comを使用して)Webから基本層にアップグレードする必要がありました。次に、こちらの手順に従ってアップグレードします( https://Azure.Microsoft.com/en-us/documentation/articles/sql-database-v12-upgrade/ )
簡単に言えば:
Azure PowerShellを使用して進行状況を監視するには:
Add-AzureAccount
Switch-AzureMode -Name AzureResourceManager
Get-AzureSqlServer -ServerName '<<yoursqlservername>>' -ResourceGroupName '<<sqlserverresourcegroupname>>'