âڑ ï¸ڈ Preview Release: RoomSharp is currently in Preview. Learn more →

Attributes Reference

Comprehensive guide to all RoomSharp attributes.

Entity Mapping

[Entity]

Marks a class as a database entity.

[Entity(TableName = "users")]
public class User { ... }

[PrimaryKey]

Marks a property as the primary key.

[PrimaryKey(AutoGenerate = true)]
public long Id { get; set; }

[ColumnInfo]

Customizes column mapping.

[ColumnInfo(Name = "user_email", TypeAffinity = "TEXT")]
public string Email { get; set; }

[Ignore]

Excludes a property from database mapping.

[Ignore]
public string TempData { get; set; }

[Index]

Defines an index on the entity.

[Index(Value = ["Email"], Unique = true)]
public class User { ... }

[ForeignKey]

Defines a foreign key constraint.

[ForeignKey(Entity = typeof(User), OnDelete = ForeignKeyAction.Cascade)]
public long UserId { get; set; }

DAO Operations

[Dao]

Marks an interface as a Data Access Object.

[Dao]
public interface IUserDao { ... }

[Query]

Defines a SQL query method.

[Query("SELECT * FROM users WHERE Id = :id")]
Task<User?> GetById(long id);

[Insert]

Defines an insert method.

[Insert]
Task<long> InsertAsync(User user);

[Update]

Defines an update method.

[Update]
Task UpdateAsync(User user);

[Delete]

Defines a delete method.

[Delete]
Task DeleteAsync(User user);

[Transaction]

Wraps a method in a database transaction.

[Transaction]
public async Task TransferAsync(...) { ... }

Database Configuration

[Database]

Marks a class as the database entry point.

[Database(Version = 1, Entities = [typeof(User)])]
public abstract class AppDatabase : RoomDatabase { ... }

[TypeConverter]

Registers a custom type converter.

[TypeConverter(typeof(DateConverter))]
public abstract class AppDatabase ...

Relations

[Relation]

Defines a relationship to load related entities.

[Relation(Entity = typeof(Post), ParentColumn = "Id", EntityColumn = "UserId")]
public List<Post> Posts { get; set; }