context.ObjectStateManager, ссылка на сборку отсутствует в Entity Framework - PullRequest
0 голосов
/ 28 ноября 2018

Я не могу понять, какую ссылку сборки я пропустил? Чтобы избежать этой ошибки для моей логики вставки в платформе сущностей?Может быть, старый вопрос, но не может найти решение для моего проекта.

- Следую Кодовому подходу в EF6.2.0

Пожалуйста, обратитесь к фотографии, которую я приложил для справки.

enter image description here / * Код Прилагается также для справки * /

using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Net;
using System.Net.Http;
using System.Configuration;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;

namespace ServerlessCoding
{
    public static class EF6AddModifyLogic
    {
        [FunctionName("EF6AddModifyLogic")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Admin, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            // Get request body
            dynamic data = await req.Content.ReadAsAsync<object>();
            string name = data?.name;

            var connectionString = ConfigurationManager.AppSettings["SqlConnection"];

            // var connectionString = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString; // Azure Serverless Code
            using (var context = new PersonDbContext(connectionString))
            {
                // If you can't decide existance of the object by its Id you must exectue lookup query:
                var person = new Person { Id = 1, Name = "Foo", Age = 32 };
                var idVar = person.Id;
                if (await context.Persons.AnyAsync(e => e.Id == idVar))
                {
                    context.Persons.Attach(person); // you can now attach your person object to this context                    
                    context.ObjectStateManager.ChangeObjectState(person, System.Data.EntityState.Modified);
                }
                else
                {
                    context.Persons.Add(person);
                }
                context.SaveChanges();
            }

            return name == null
                ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
                : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
        }

        // POCO Class - This should match the SQL table definition.        
        public class Person
        {
            [Key]
            public int Id { get; set; }               
            public string Name { get; set; }
            public int Age { get; set; }
        }


        // Context Class for creating the tables. 
        public partial class PersonDbContext : DbContext
        {
            public PersonDbContext(string cs) : base(cs) { }
            public DbSet<Person> Persons { get; set; }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            }
        }
    }

}
...