FineUI 官方论坛

标题: 【已解决】Appbox3.0数据库版本问题 [打印本页]

作者: 洞天    时间: 2013-8-28 08:39
标题: 【已解决】Appbox3.0数据库版本问题
老大 appbox3.0中的数据库,你用的版本是sqlserver2012的吧,我这里2008不能附加啊,能不能提供个代码直接生成呢?

作者: erp8@live.cn    时间: 2013-8-28 09:26
我这里2008R2 也不能附加
作者: 芝麻绿豆官    时间: 2013-8-28 09:31
群号多少呀,我在没收到邮件!
作者: sanshi    时间: 2013-8-28 09:51
芝麻绿豆官 发表于 2013-8-28 09:31
群号多少呀,我在没收到邮件!

已发
作者: sanshi    时间: 2013-8-28 09:56
AppBox v3.0使用的是EntityFramework的Code First模式,默认使用的VS2012的LocalDB数据库。

如果想使用SqlServer 2005, 2008,2010,2012 ....,只需要如下三部走:

1. 在Web.config中配置正确的数据库连接字符串,例如:
  1. <connectionStrings>
  2.         <clear />
  3.         <add name="Default" connectionString="Password=pass;Persist Security Info=True;User ID=sa;Initial Catalog=AppBox;Data Source=." providerName="System.Data.SqlClient" />
  4. </connectionStrings>
复制代码
2. 在 AppBoxContext 类中,添加构造函数(其中Default就是前面配置的数据库连接名称):
  1. public AppBoxContext() : base("Default")
  2. {
  3. }
复制代码
3. 重新编译项目,F5运行即可!(EF会自动生成需要的数据库)




作者: 洞天    时间: 2013-8-28 10:04
这个我都改过了,但是每次都要删除数据库。这是什么情况?
作者: sanshi    时间: 2013-8-28 10:05
洞天 发表于 2013-8-28 10:04
这个我都改过了,但是每次都要删除数据库。这是什么情况?


找到:AppBoxDatabaseInitializer.cs

public class AppBoxDatabaseInitializer : DropCreateDatabaseAlways<AppBoxContext>

把 DropCreateDatabaseAlways 改为  DropCreateDatabaseIfModelChanges
作者: 洞天    时间: 2013-8-28 10:11
欧了。。。。 10个字。。
作者: oliverary    时间: 2013-8-28 10:32
老大没收到啊,发我一个
作者: sanshi    时间: 2013-8-28 10:45
oliverary 发表于 2013-8-28 10:32
老大没收到啊,发我一个

VIP3及以上级别会员请到《FineUI VIP3会员专享QQ群》下载 AppBox v3.0 全部源代码。
作者: 在飘雪的季节。    时间: 2013-8-28 11:18
不错,学习中!
作者: Mr.Wu    时间: 2013-8-28 11:57
sanshi 发表于 2013-8-28 10:05
找到:AppBoxDatabaseInitializer.cs

public class AppBoxDatabaseInitializer : DropCreateDatabaseAl ...

老大,我们下载的appbox3.0也要修改吗?
作者: sanshi    时间: 2013-8-28 12:02
Mr.Wu 发表于 2013-8-28 11:57
老大,我们下载的appbox3.0也要修改吗?

是的
作者: 邓/tx    时间: 2013-8-28 16:19
特惠套装(399元,比单独购买省99元!):
FineUI.Design商业授权
FineUI视频教学
FineUI VIP5会员
AppBox源代码永久投递
----------------------------------------------------------------
这上面包括了extjs的授权吗?
作者: sanshi    时间: 2013-8-28 16:33
邓/tx 发表于 2013-8-28 16:19
特惠套装(399元,比单独购买省99元!):
FineUI.Design商业授权
FineUI视频教学

不包含。extjs授权请到extjs官网购买
作者: Mr.Wu    时间: 2013-8-31 10:38
sanshi 发表于 2013-8-28 10:05
找到:AppBoxDatabaseInitializer.cs

public class AppBoxDatabaseInitializer : DropCreateDatabaseAl ...

按字面的意思理解:DropCreateDatabaseIfModelChanges,如果模块做了修改就删除数据库,再创建数据库。疑问:这样一来,重新创建数据库的话,数据库里面原有的数据会不会丢失?特别是项目写入数据越来越多的时候
作者: sanshi    时间: 2013-9-1 09:50
Mr.Wu 发表于 2013-8-31 10:38
按字面的意思理解:DropCreateDatabaseIfModelChanges,如果模块做了修改就删除数据库,再创建数据库。疑 ...

会的。如果数据模型改变了,数据库肯定是要变化的,这是可以理解的。

对于你的需求,可以看看 Entity Framework 提供的 Migration 功能:http://msdn.microsoft.com/en-us/data/jj591621
作者: gaoqiang    时间: 2013-9-21 21:27
求助:改完后遇到这个问题:
Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NotSupportedException: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.

源错误:


行 34:         public static void InitConfigs()
行 35:         {
行 36:             _configs = PageBase.DB.Configs.ToList();
行 37:         }
行 38:  

源文件: d:\En360\En360main\AppBox\Business\Helper\ConfigHelper.cs    行: 36


作者: 晕道    时间: 2013-9-22 16:18
sanshi 发表于 2013-8-28 12:02
是的

为啥不默认从  DATABASE-FIRST 切入呢。
作者: Vincent.Q    时间: 2013-10-1 14:56
已付款,支付宝帐号:xiyang-0@163.com,请注意查收,谢谢
作者: sanshi    时间: 2013-10-1 16:41
Vincent.Q 发表于 2013-10-1 14:56
已付款,支付宝帐号:xiyang-0@163.com,请注意查收,谢谢

多谢支持,已发送 2 封邮件到你的 163 邮箱
作者: bertchen    时间: 2013-10-15 16:57
我在QQ群共享中下载了 appbox.sql
生成数据库后,运行出错。
declare @BatchID uniqueidentifier

                                            set @BatchID = NEWID()

                                            UPDATE [Event] WITH (TABLOCKX)
                                                SET [BatchID] = @BatchID,
                                                [ProcessStart] = GETUTCDATE(),
                                                [ProcessHeartbeat] = GETUTCDATE()
                                            FROM (
                                                SELECT TOP 4 [EventID] FROM [Event] WITH (TABLOCKX) WHERE [ProcessStart] is NULL ORDER BY [TimeEntered]
                                                ) AS t1
                                            WHERE [Event].[EventID] = t1.[EventID]

                                            select top 4
                                                    E.[EventID],
                                                    E.[EventType],
                                                    E.[EventData]
                                            from
                                                    [Event] E WITH (TABLOCKX)
                                            where
                                                    [BatchID] = @BatchID
                                            ORDER BY [TimeEntered]

发现没有表  Event
作者: 孤独的过客    时间: 2013-11-13 14:30
请问appbox3中module中的模型类怎么写的呢,手工呢,还是有什么可视化的工具?   还有一个问题是,我怎样把现有MS SQL SERVER 中的数据表结构转换为 module类呢?或者有什么导出工具呢?
作者: 甘桂    时间: 2013-11-18 23:11
APPBOX2.0的数据库与APPBOX3.0的差不多呀。能用的。
作者: 追梦(中国梦)    时间: 2013-12-15 09:09
sanshi 发表于 2013-8-28 10:45
VIP3及以上级别会员请到《FineUI VIP3会员专享QQ群》下载 AppBox v3.0 全部源代码。 ...

直接捐赠100元,加入VIP3可行?
作者: sanshi    时间: 2013-12-15 15:09
甘桂 发表于 2013-11-18 23:11
APPBOX2.0的数据库与APPBOX3.0的差不多呀。能用的。

AppBox2.0的数据库和AppBox3.0的完全不同,AppBox3.0是基于EF CodeFirst模式,数据库是由C#代码自动生成的
作者: 亮亮胖胖    时间: 2013-12-29 02:37
sanshi 发表于 2013-12-15 15:09
AppBox2.0的数据库和AppBox3.0的完全不同,AppBox3.0是基于EF CodeFirst模式,数据库是由C#代码自动生成 ...

我看了下EF CodeFirst模式生成的数据表,可以说是中规中矩的。
但是,按我平时的习惯像在做存在父子关系的数据表时,我习惯上会使用00,0001,000101,等这样的字符作为主键数据类型。因为在实际的业务中我们经常筛选某一类别下面的所有子类,或查找所有的二级节点、所有的末级节点。这样会很方便和合理的。
作者: sanshi    时间: 2013-12-29 16:30
亮亮胖胖 发表于 2013-12-29 02:37
我看了下EF CodeFirst模式生成的数据表,可以说是中规中矩的。
但是,按我平时的习惯像在做存在父子关系 ...

可以把“00,0001,000101”单独作为一个表字段即可,主键还是递增数字靠谱点
作者: 亮亮胖胖    时间: 2013-12-29 20:55
sanshi 发表于 2013-12-29 16:30
可以把“00,0001,000101”单独作为一个表字段即可,主键还是递增数字靠谱点

是哦,这样也不错,
作者: salman    时间: 2014-3-6 15:03
感谢分享。




欢迎光临 FineUI 官方论坛 (https://www.fineui.com/BBS/) Powered by Discuz! X3.4