Razor 我的代码优先方法出错我有EF 4.1和VS 2010

Razor 我的代码优先方法出错我有EF 4.1和VS 2010,razor,entity-framework-4,ef-code-first,asp.net-mvc-3-areas,Razor,Entity Framework 4,Ef Code First,Asp.net Mvc 3 Areas,1)我有一个Enttiy类,其中有三个表的代码如下所示 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data.Entity.ModelConfiguration; using System.Linq; using System.Web; namespace GridWithInlineEdit.Models { #reg

1)我有一个Enttiy类,其中有三个表的代码如下所示

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Web;

namespace GridWithInlineEdit.Models
{
    #region ENTITY BLOCK
    [Table("TBLUSER", Schema = "orient")]
    public  class Users
    {
        public Users()
        {
            UsersDetailCollection = new List<Usersdetail>();
        }
        //
        [Key, Column("UID", TypeName = "INT")]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Uid { get; set; }

        [Required]
        [StringLength(50, MinimumLength = 10, ErrorMessage = "Please Enter {0} Upto 50 Characters!")]
        [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed here!")]
        [Column("FNAME", TypeName = "nvarchar")]
        public string Fname { get; set; }

        [Required]
        [StringLength(100, MinimumLength = 10, ErrorMessage = "Please Enter {0} Upto 50 Characters!")]
        [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed here!")]
        [Column("LNAME", TypeName = "nvarchar")]
        public string Lname { get; set; }



        public ICollection<Usersdetail> UsersDetailCollection { get; set; }

    }

    [Table("TBLUSERDETAIL", Schema = "orient")]
    public  class Usersdetail
    {
        public Usersdetail()
        {
            CountryCollection = new List<Countries>();
        }
        [Key, Column("ID", TypeName = "INT")]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }


        [StringLength(100)]
        [Column("EMAIL", TypeName = "VARCHAR")]
        public String Email { get; set; }

        [StringLength(11)]
        [Column("PHONE", TypeName = "VARCHAR")]
        public String Phone { get; set; }

        [Required]
        public int? UserId { get; set; }

        [ForeignKey("UserId"), Column("UID", TypeName = "INT")]
        public virtual Users Users { get; set; }

        [Required]
        public int? CountryId { get; set; }

        [ForeignKey("CountryId"), Column("CID", TypeName = "INT")]
        public virtual Countries Countries { get; set; }




        public ICollection<Countries> CountryCollection { get; set; }
    }

    [Table("TBLCOUNTRY", Schema = "orient")]
    public class Countries
    {
        [Key, Column("CID", TypeName = "INT")]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Cid { get; set; }

        [StringLength(50)]
        [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed here!")]
        [Column("CNAME", TypeName = "VARCHAR")]
        public String Cname { get; set; }

    }
    #endregion



    #region ENTITY MAPPING BLOCK
    public class UserMap : EntityTypeConfiguration<Users>
    {
        #region Constructors and Destructors

        internal UserMap()
        {
            // Primary Key
            HasKey(t => t.Uid);
            Property(p => p.Uid).HasColumnName("UID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
            // Table & Column Mappings
            ToTable("TBLUSER");
            Property(t => t.Fname).HasColumnName("FNAME").HasMaxLength(50);
            Property(t => t.Lname).HasColumnName("LNAME").HasMaxLength(50);
        }
        #endregion
    }

    public class UserDetailMap : EntityTypeConfiguration<Usersdetail>
    {
        #region Constructors and Destructors

        internal UserDetailMap()
        {
            // Primary Key
            HasKey(t => t.ID);
            HasKey(t => t.UserId);
            HasKey(t => t.CountryId);

            // Properties
            Property(t => t.Email).HasMaxLength(100);
            Property(t => t.Phone).HasMaxLength(11);

            // Column Mappings
            ToTable("TBLUSERDETAIL");
            Property(t => t.ID).HasColumnName("ID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
            Property(t => t.Email).HasColumnName("EMAIL");
            Property(t => t.Phone).HasColumnName("PHONE");
            Property(t => t.UserId).HasColumnName("UID");
            Property(t => t.CountryId).HasColumnName("CID");

            // Relationships
            HasOptional(t => t.Users).WithMany().HasForeignKey(d => d.UserId);
            HasOptional(t => t.Countries).WithMany().HasForeignKey(d => d.CountryId);
        }

        #endregion
    }


    public class CountryMap : EntityTypeConfiguration<Countries>
    {
        #region Constructors and Destructors
        internal CountryMap()
        {
            // Primary Key
            HasKey(t => t.Cid);
            // Properties
            Property(t => t.Cname).HasMaxLength(50);
            // Column Mappings
            Property(t => t.Cid).HasColumnName("CID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
            Property(t => t.Cname).HasColumnName("CNAME");
        }
        #endregion
    }
    #endregion

}
且初始化类如下所示

using System;
using System.Data.Common;
using System.Data.Entity.Infrastructure;

namespace GridWithInlineEdit.Models
{
    public static class Constants
    {
        public static string ConnectionString
        {
            get { return GetDecryptedConnectionString(); }
        }

        private static string GetDecryptedConnectionString()
        {
            return @"Data Source=193.193.193.254;Initial Catalog=EFCFUsersdb;;USER ID=sa;PASSWORD=123;Persist Security Info=True";
        }
    }

    class EncryptedIDbConnectionFactory : IDbConnectionFactory
    {
        #region Private Fields

        IDbConnectionFactory _connectionFactory;

        #endregion

        #region Constructors

        public EncryptedIDbConnectionFactory(IDbConnectionFactory dbConnectionFactory)
        {
            if (dbConnectionFactory == null)
            {
                throw new ArgumentNullException("dbConnectionFactory can not be null");
            }

            _connectionFactory = dbConnectionFactory;
        }

        #endregion

        #region IDbConnectionFactory implementation
        public DbConnection CreateConnection(string nameOrConnectionString)
        {
            //decryption of connection string
            string decryptedConnectionString =
                GetDecryptedConnectionString(nameOrConnectionString);

            return _connectionFactory.CreateConnection(decryptedConnectionString);
        }
        #endregion

        #region Private Methods
        private string GetDecryptedConnectionString(string nameOrConnectionString)
        {
            //use some encryption library to decrypt
            return nameOrConnectionString;
        }
        #endregion
    }
}
using System.Data.Entity;


namespace GridWithInlineEdit.Models
{
    public class Init : DropCreateDatabaseIfModelChanges<SampleContext>
    {
        protected override void Seed(SampleContext context)
        {
            base.Seed(context);

            //context.Locations.Add(new Location() { LocationName = "Khanna, LDH" });
            //context.Sessions.Add(new Session() { SessionName = "Entity Framework" });

            context.SaveChanges();
        }
    }
}
现在的问题是,每当未创建运行我的应用程序数据库时,通过在索引操作结果上放置断点来查看add watch in_db对象时,就会显示异常服务器版本属性。
请解决或给出解决方案我已经尝试了很多次,但我不明白为什么会发生这种情况

我知道您在上面的评论中提到,您应用了Windows Server修补程序并使其正常工作,但通过查看您的项目,我发现了一些问题:

  • 控制器中的“创建”方法中没有用于添加的内容 新记录
  • 没有“读取”方法可以将数据返回到任何对象 这可能需要读取数据,例如剑道网格
  • 没有用于删除数据记录的“删除”方法
  • 我不确定UserMap、DetailMap和CountryMap以及您的“RegisterRoutes”等在应用程序启动时的用途——对我来说,这似乎是一个严重的过度复杂的情况
  • 未发布视图(表示层)代码
也许你在以后的工作中修复了创建、读取和删除例程,也许UserMap、DetailMap、CountryMap和Init都是为了做些什么,但是如果我能了解你在做什么,那就见鬼了。我没有看到您将数据拉入的视图代码(网格或其他)。当寻求帮助时,只要说,背景就是一切

虽然您需要获取并安装Telerik的Kendo UI MVC组件,但您可能值得在本博客中了解如何在MVC中设置实体框架并准备网格以接收数据:

SQL Server 2005上的“代码优先”要比新版本的SQL Server更为棘手。那个版本有什么特别的原因吗?你们的EF配置是什么?您是否尝试删除自定义连接,并让它创建默认数据库,或者使用不同的提供程序等。@NSGaga我已尽了一切努力,但没有任何结果。@JoachimIsaksson当我尝试在索引操作结果中查看我的db对象时,我遇到连接关闭异常。@NSGaga我只想在自定义服务器上使用自定义数据库名称,首先使用ef代码创建数据库。
using System.Data.Entity;
using System.Data.SqlClient;

namespace GridWithInlineEdit.Models
{
    public class SampleContext : DbContext
    {

        public SampleContext()
            : base(new SqlConnection(Constants.ConnectionString) ,false)
            //Data Source=193.193.193.254;Initial Catalog=EFCFUsersdb;Persist Security Info=True;User ID=sa;Password=123
        {
            Configuration.ProxyCreationEnabled = true;
            Configuration.AutoDetectChangesEnabled = true;
        }
        public DbSet<Users> User { get; set; }
        public DbSet<Usersdetail> UserDetail { get; set; }
        public DbSet<Countries> Country { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Configurations.Add(new UserMap());
            modelBuilder.Configurations.Add(new UserDetailMap());
            modelBuilder.Configurations.Add(new CountryMap());

        }




    }
}
using System.Data.Entity;
using System.Web.Mvc;
using System.Web.Routing;
using GridWithInlineEdit.Models;

namespace GridWithInlineEdit
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "User", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
        }
        protected void Application_Start()
        {

            //Database.DefaultConnectionFactory = new EncryptedIDbConnectionFactory(Database.DefaultConnectionFactory);
            Database.SetInitializer<SampleContext>(new Init());
            AreaRegistration.RegisterAllAreas();
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }
    }

}
> 1. using System.Web.Mvc; using GridWithInlineEdit.Models;
>     
>     namespace GridWithInlineEdit.Controllers {
>         public class UserController : Controller
>         {
>     
>     
>             public ActionResult Index()
>             {
>                 var db = new SampleContext();
>                 return View();
>             }
>     
>             [HttpPost]
>             public ActionResult Create()
>             {
>                 
>                 //return View();
>                 return null;
>             }
>     
>         } }