小编Gre*_*che的帖子

SQLite与实体框架6"没有这样的表"

我试图首先用SQLite和EntityFramework 6代码实现这个问题.我可以创建数据库并且有一个文件(虽然是空的),但是当我尝试向数据库添加一个条目时,它说没有这样的表.然而,当我尝试手动创建表时()它告诉我表已经存在.db.Database.ExecuteSqlCommand("CREATE TABLE etc.)

我已经发现了一些关于这个的问题,但是它们都是关于不是绝对的道路,这根本不是这里的情况.

上下文

//Context:
class MediaContext : DbContext
{
    public DbSet<MediaModel> Media { get; set; }

    public MediaContext(string filename): base(new SQLiteConnection() {
        ConnectionString =
            new SQLiteConnectionStringBuilder()
            { DataSource = filename, ForeignKeys = false }
            .ConnectionString
    }, true)
    {

    }        
}
Run Code Online (Sandbox Code Playgroud)

DAL

//In the DAL:
public DataAccessLayer(string path)
{
   _path = Path.GetFullPath(path); //<--The path already comes full in, I'm just paranoid at this point.
   _connectionPath = _path + @"\MyDatabase.sqlite";

   using (var …
Run Code Online (Sandbox Code Playgroud)

c# sqlite entity-framework

2
推荐指数
4
解决办法
5970
查看次数

为什么0x82小于0x80?

我正在尝试为大学课堂练习优化String课程.普通字符串存储为char*,size_t存储长度.sizeof(String)是8,它应该保持这样.然而,如果我只有7个或更少字符的字符串(如果考虑空终止符,则为6),而不是使用指针,我想直接将它们存储在指针/ size_t字节中.

为此,我有两个结构,一个用于char*和size_t,另一个用于8个字符(字节)的数组.我将它放在一个联合中,并给String类一个所述联合的成员.

要确定字符串是普通字符串还是短字符串,我使用长度为size_t或byte [7]的最高位.如果byte [7]大于或等于128(或0x80),则它是一个短字符串,字符直接存储在字节中.然后将长度存储在byte [7]的其余位中.

到目前为止,这就是理论.正常的字符串位已经实现,我现在正在尝试实现短字符串位.我现在遇到的问题是使用以下代码:

inline const char* c_str(void) const
    {
        if (compound.bytes.bytes[7] >= 0x80)
            return compound.bytes.bytes;
        return compound.string.m_string;
    }
Run Code Online (Sandbox Code Playgroud)

从Visual Studio观察器我知道compound.bytes.bytes [7]是0x82(字符串是"hi").所以它应该是0x82> = 0x80,如同在true中并返回字节,但由于某种原因,这种比较变为false并返回普通字符串的char*,这当然是一个虚假的指针(准确地说是0xcc006968).

另外值得指出的是,这个代码仍能正常用于普通字符串.

我错过了什么,我做错了什么?

c++ visual-studio

0
推荐指数
1
解决办法
256
查看次数

标签 统计

c# ×1

c++ ×1

entity-framework ×1

sqlite ×1

visual-studio ×1