Я пытался придумать лучший заголовок, но не могу.
Проблема в том, что я новичок в функциях Azure, но выполнил простую работу по записи в таблицу SQL Azure. Теперь я попытался построить самый простой вид Datalayer на основе Entity Framework и загрузил его. Сейчас он скомпилирован как .Net 4.6 и использует EF 6.1.3.
Я использую строку подключения согласно второму ответу здесь Второй ответ и проверил, что он корректно извлекается. Обновление - я также использовал это руководство .
Удаление этого {#r "D: \ home \ site \ wwwroot \ sharedbin \ TestDataLayer.dll"} приводит к тому, что редактор жалуется на отсутствующие сборки, поэтому он находит DLL-библиотеку, о которой идет речь.
Однако он не будет работать - он не может найти TestDataLayer.dll.
Я запускаю это только в редакторе портала (я еще не освоил развертывание непосредственно из проекта Visual Studio - не смейтесь: P).
#r "System.Configuration"
#r "System.Data.Entity"
#r "D:\home\site\wwwroot\sharedbin\TestDataLayer.dll"
using System;
using System.Collections;
using System.Configuration;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity.SqlServer;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Net;
using TestDataLayer;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
var connection = ConfigurationManager.ConnectionStrings["sql_connection"].ConnectionString;
using(var db = new SyncDbContext(connection))
{
var RK = new RKAzureTest() {TestField1 = "It finally worked?" };
db.RKAzureTests.Add(RK);
db.SaveChanges();
}
}
[DbConfigurationType(typeof(myDBContextConfig))]
public partial class SyncDbContext : System.Data.Entity.DbContext
{
public SyncDbContext(string cs) : base(cs) {}
public DbSet<RKAzureTest> RKAzureTests {get;set;}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
public class myDBContextConfig : DbConfiguration
{
public myDBContextConfig()
{
SetProviderServices("System.Data.EntityClient",
System.Data.Entity.SqlServer.SqlProviderServices.Instance);
SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory());
}
}
Это функция.json:
{
"frameworks": {
"net46":{
"dependencies": {
"EntityFramework": "6.1.3"
}
}
}
}
Я сам скомпилировал dll для .Net 4.6 после подозрения, что функции Azure не поддерживают .net 4.7.1, и через Kudu загрузил скомпилированную dll в папку sharedbin (проверял путь десятки раз!) .
Это ошибка, выдаваемая:
2018-05-01T11:00:00.012 [Warning] Unable to find assembly 'TestDataLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Are you missing a private assembly file?
2018-05-01T11:00:00.012 [Error] Exception while executing function: Functions.TimerTriggerCSharp1. mscorlib: Exception has been thrown by the target of an invocation. f-TimerTriggerCSharp1__514732255: Could not load file or assembly 'TestDataLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Не совсем уверен, что еще можно оставить - я использую исполняемую версию 1.0.11702 в настройках приложения, поскольку я обнаружил, что жизнь стала намного сложнее, если я перешел на бета-версию.
Если кто-нибудь может указать мне рабочее руководство для этого варианта использования (сначала База данных, EF 6.1.3 и т. Д.), Я был бы благодарен.
Любая помощь предлагается с благодарностью!
Спасибо:)