2012-04-19 3 views
2

raven db를 처음 사용했습니다. API를 읽고 데이터베이스를 만들려고합니다. 존재하지 않는다면 데이터베이스를 만드는 EnsureDatabaseExists 함수와 유사합니다. 실제로 DocumentDatabase 형식을 사용하여 해당 데이터베이스를 만듭니다. 나는 그것을 사용하고 데이터베이스를 생성하지만 직접이 객체를 사용하여이 객체를 사용하여 문서로 직접 작업 할 수 있습니다. 내가 제대로하고 있니? 아니면 문서로 작업 할 수있는 더 나은 방법이있을 수 있습니다. 감사합니다.Raven db : 새 데이터베이스 만들기

답변

1

당신은 데이터베이스 문서와 쿼리 문서를 혼동스럽게 생각합니다.

데이터베이스 문서는 기본 데이터베이스가 아닌 RavenDB의 데이터베이스를 나타내는 기본 데이터베이스의 문서입니다. 데이터베이스 이름 및 위치와 같은 일부 데이터를 저장합니다. 당신은이 문서와 관련이없는 ravendb의 소비자입니다. 그리고 이것은 다른 문서를 쿼리하는 것과는 아무런 관련이 없습니다.

문서에 대한 ravendb를 쿼리하는 방법을 배우려면 here을보십시오. 특정 데이터베이스를 쿼리하려면 해당 데이터베이스를 사용하는 경우에만 connection string에 데이터베이스 이름을 지정하는 것이 좋습니다. 한 번에 여러 데이터베이스에 대해 작업하는 경우 세션을 열 때 원하는 데이터베이스 이름을 지정할 수 있습니다 (store.OpenSession("database-name")).

0

store.DatabaseCommands.GlobalAdmin에서 세 가지 방법을 사용할 수 있습니다.

  • GetDatabaseNames는 : 데이터베이스 이름
  • EnsureDatabaseExists을 나열 그렇지
  • CreateDatabase 존재 않을 경우 데이터베이스를 작성합니다 DocumentStore.Initialize() 이미 데이터베이스가 생성되는 것을 보장하는 것이 데이터베이스를

노트를 작성합니다. 이 동작을 피하기 위해 부울 false를 전달할 수 있습니다.

// init store object, you pass the service URL + the database name 
var store = new DocumentStore("http://localhost:8001/databases/MyNewDataBase"); 
store.Initialize(false); 

// most simple thing is: 
var dbName = store.DefaultDatabase; 
store.DatabaseCommands.GlobalAdmin.EnsureDatabaseExists(dbName); 

당신은 만들지 않고 확인하려면 다음

// there is a method to list the database names 
bool exists = false; 
for (int i = 0; i < int.MaxValue; i++) 
{ 
    var names = store.DatabaseCommands.GlobalAdmin.GetDatabaseNames(100, i * 100);  
    if (names.Contains(dbName)) 
    { 
     exists = true; 
     break; 
    } 

    if (names.Length < 100) 
    { 
     // no more databases 
     break; 
    } 
} 

if (exists) 
{ 
    // database exists, do something 
} 

참조 : https://ravendb.net/docs/article-page/3.5/Csharp/client-api/commands/how-to/create-delete-database

관련 문제