.NET和实体框架数据库创建

时间:2016-08-29 09:56:48

标签: .net sql-server entity-framework visual-studio wcf

我想使用Entity Framework在.net中创建SQL Server数据库,但我找不到如何操作。

截至目前,我有:

  • 一个包含所有默认名称
  • 的简单项目(WCF服务)
  • 数据库模型

    Database model picture

  • 应创建数据库的SQL文件;我使用模型生成它(从模型生成数据库)

  • 服务文件(.svc

代码:

public class Service1 : IService1
{
    public Entity1 GetData(int id)
    {
        using (Model1Container ctx = new Model1Container()) {
            try {
                Entity1 entity = ctx.Entity1Set.FirstOrDefault(e => e.Id == id);
                return entity;
            }
            catch (Exception e) {
                Console.WriteLine("CAPTAIN, WE GOT AN ERROR: " + e);
                return null;
            }
        }
    }

    public String PostData(string value)
    {
        using (Model1Container ctx = new Model1Container()){
            Entity1 newEntity = new Entity1();
            newEntity.Property1 = value;
            ctx.Entity1Set.Add(newEntity);

            try {
                ctx.SaveChanges();
            } catch (Exception e) {
                return ("CAPTAIN, WE GOT AN ERROR: " + e); 
            }   
        }
        return "0";
    }

    public CompositeType GetDataUsingDataContract(CompositeType composite)
    {
        if (composite == null)
        {
            throw new ArgumentNullException("composite");
        }

        if (composite.BoolValue)
        {
            composite.StringValue += "Suffix";
        }
        return composite;
    }
}

但问题是似乎没有创建数据库。我找不到如何运行SQL文件,服务器资源管理器什么都没显示,当我尝试在我的数据库中执行请求时,我收到以下错误:

  

System.Data.SqlClient.SqlException:无效的对象名称'dbo.Entity1Set'。

我忘了重要的事吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server CE,则可以从上下文中了解如果数据库文件不存在该怎么办并创建该文件:

 Database.SetInitializer( new CreateDatabaseIfNotExists<YourContext>() );

如果您使用的是Sqlite,则上下文是创建数据库的正确位置,但实体框架中并不完全支持该功能,您必须手动执行操作&#39;。 See here.

如果您正在处理SQL Server或其他真正的db&#39;该程序类似于this